mirror of
https://github.com/alecthomas/chroma.git
synced 2025-02-21 19:06:18 +02:00
This commit refactors code from the markdown lexer into the chroma package, and alters the PostgreSQL and CQL lexers to make use of it. Additionally, an example markdown with the various sublexers is added.
82 lines
1.6 KiB
Plaintext
82 lines
1.6 KiB
Plaintext
# about
|
|
|
|
## user defined function in cql
|
|
|
|
```javascript
|
|
column.substring(0,num)
|
|
```
|
|
|
|
```cql
|
|
CREATE FUNCTION IF NOT EXISTS cycling.left (column TEXT,num int)
|
|
RETURNS NULL ON NULL INPUT
|
|
RETURNS text
|
|
LANGUAGE javascript AS $$
|
|
column.substring(0,num)
|
|
$$;
|
|
|
|
CREATE OR REPLACE FUNCTION cycling.fLog (input double)
|
|
CALLED ON NULL INPUT
|
|
RETURNS double LANGUAGE java AS
|
|
'return Double.valueOf(Math.log(input.doubleValue()));';
|
|
```
|
|
|
|
```postgres
|
|
DROP TABLE IF EXISTS emp CASCADE;
|
|
|
|
CREATE TABLE emp (
|
|
empname text,
|
|
salary integer,
|
|
last_date timestamp,
|
|
last_user text
|
|
);
|
|
|
|
select
|
|
$my_tag$aoeuaoeu$my_tag$ as blah
|
|
;
|
|
|
|
CREATE OR REPLACE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
|
|
BEGIN
|
|
-- Check that empname and salary are given
|
|
IF NEW.empname IS NULL THEN
|
|
RAISE EXCEPTION 'empname cannot be null';
|
|
END IF;
|
|
IF NEW.salary IS NULL THEN
|
|
RAISE EXCEPTION '% cannot have null salary', NEW.empname;
|
|
END IF;
|
|
|
|
-- Who works for us when she must pay for it?
|
|
IF NEW.salary < 0 THEN
|
|
RAISE EXCEPTION '% cannot have a negative salary', NEW.empname;
|
|
END IF;
|
|
|
|
-- Remember who changed the payroll when
|
|
NEW.last_date := current_timestamp;
|
|
NEW.last_user := current_user;
|
|
RETURN NEW;
|
|
END;
|
|
$emp_stamp$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
|
|
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
|
|
|
|
DO language plpgsql $$
|
|
declare r record;
|
|
begin
|
|
for r in select * from books
|
|
loop
|
|
execute 'select ''' || r.title || '''';
|
|
end loop;
|
|
end
|
|
$$;
|
|
|
|
DO $$
|
|
declare r record;
|
|
begin
|
|
for r in select * from books
|
|
loop
|
|
execute 'select ''' || r.title || '''';
|
|
end loop;
|
|
end
|
|
$$;
|
|
```
|