From 49bbe0373d49ff742b1d661ef34408a819e02f8d Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sun, 21 Feb 2016 13:45:31 -0800 Subject: [PATCH] Properly HTML escape docs for Type --- codegen/Cargo.toml | 1 + codegen/src/main.rs | 1 + codegen/src/sqlstate.rs | 1 + codegen/src/types.rs | 4 + src/error/sqlstate.rs | 1 + src/types/types.rs | 181 ++++++++++++++++++++-------------------- 6 files changed, 99 insertions(+), 90 deletions(-) diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index 1d17c33f..1ed48c4e 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -6,3 +6,4 @@ authors = ["Steven Fackler "] [dependencies] phf_codegen = "0.7" regex = "0.1" +marksman_escape = "0.1" diff --git a/codegen/src/main.rs b/codegen/src/main.rs index affb3749..f7143a40 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -1,5 +1,6 @@ extern crate phf_codegen; extern crate regex; +extern crate marksman_escape; use std::ascii::AsciiExt; use std::path::Path; diff --git a/codegen/src/sqlstate.rs b/codegen/src/sqlstate.rs index 401dc290..298022b8 100644 --- a/codegen/src/sqlstate.rs +++ b/codegen/src/sqlstate.rs @@ -74,6 +74,7 @@ fn make_header(file: &mut BufWriter) { write!(file, "// Autogenerated file - DO NOT EDIT use phf; + " ).unwrap(); } diff --git a/codegen/src/types.rs b/codegen/src/types.rs index c17e29d3..b8169109 100644 --- a/codegen/src/types.rs +++ b/codegen/src/types.rs @@ -4,6 +4,7 @@ use std::collections::BTreeMap; use std::fs::File; use std::io::{Write, BufWriter}; use std::path::Path; +use marksman_escape::Escape; use snake_to_camel; @@ -99,6 +100,8 @@ fn parse_types(ranges: &BTreeMap) -> BTreeMap { doc.push_str(" - "); doc.push_str(descr); } + let doc = Escape::new(doc.as_bytes().iter().cloned()).collect(); + let doc = String::from_utf8(doc).unwrap(); let type_ = Type { name: name, @@ -120,6 +123,7 @@ fn make_header(w: &mut BufWriter) { use std::fmt; use types::{{Oid, Kind, Other}}; + " ).unwrap(); } diff --git a/src/error/sqlstate.rs b/src/error/sqlstate.rs index 2c7483ff..874ea5f4 100644 --- a/src/error/sqlstate.rs +++ b/src/error/sqlstate.rs @@ -1,5 +1,6 @@ // Autogenerated file - DO NOT EDIT use phf; + /// SQLSTATE error codes #[derive(PartialEq, Eq, Clone, Debug)] pub enum SqlState { diff --git a/src/types/types.rs b/src/types/types.rs index 31d11c83..6dc95cb4 100644 --- a/src/types/types.rs +++ b/src/types/types.rs @@ -2,10 +2,11 @@ use std::fmt; use types::{Oid, Kind, Other}; + /// A Postgres type. #[derive(PartialEq, Eq, Clone, Debug)] pub enum Type { - /// BOOL - boolean, 'true'/'false' + /// BOOL - boolean, 'true'/'false' Bool, /// BYTEA - variable-length string, binary values escaped Bytea, @@ -25,9 +26,9 @@ pub enum Type { Regproc, /// TEXT - variable-length string, no limit specified Text, - /// OID - object identifier(oid), maximum 4 billion + /// OID - object identifier(oid), maximum 4 billion Oid, - /// TID - (block, offset), physical location of tuple + /// TID - (block, offset), physical location of tuple Tid, /// XID - transaction id Xid, @@ -41,121 +42,121 @@ pub enum Type { Json, /// XML - XML content Xml, - /// XML[] + /// XML[] XmlArray, /// PG_NODE_TREE - string representing an internal node tree PgNodeTree, - /// JSON[] + /// JSON[] JsonArray, /// SMGR - storage manager Smgr, - /// POINT - geometric point '(x, y)' + /// POINT - geometric point '(x, y)' Point, - /// LSEG - geometric line segment '(pt1,pt2)' + /// LSEG - geometric line segment '(pt1,pt2)' Lseg, - /// PATH - geometric path '(pt1,...)' + /// PATH - geometric path '(pt1,...)' Path, - /// BOX - geometric box '(lower left,upper right)' + /// BOX - geometric box '(lower left,upper right)' Box, - /// POLYGON - geometric polygon '(pt1,...)' + /// POLYGON - geometric polygon '(pt1,...)' Polygon, /// LINE - geometric line Line, - /// LINE[] + /// LINE[] LineArray, /// CIDR - network IP address/netmask, network address Cidr, - /// CIDR[] + /// CIDR[] CidrArray, /// FLOAT4 - single-precision floating point number, 4-byte storage Float4, /// FLOAT8 - double-precision floating point number, 8-byte storage Float8, - /// ABSTIME - absolute, limited-range date and time (Unix system time) + /// ABSTIME - absolute, limited-range date and time (Unix system time) Abstime, - /// RELTIME - relative, limited-range time interval (Unix delta time) + /// RELTIME - relative, limited-range time interval (Unix delta time) Reltime, - /// TINTERVAL - (abstime,abstime), time interval + /// TINTERVAL - (abstime,abstime), time interval Tinterval, /// UNKNOWN Unknown, - /// CIRCLE - geometric circle '(center,radius)' + /// CIRCLE - geometric circle '(center,radius)' Circle, - /// CIRCLE[] + /// CIRCLE[] CircleArray, - /// MONEY - monetary amounts, $d,ddd.cc + /// MONEY - monetary amounts, $d,ddd.cc Money, - /// MONEY[] + /// MONEY[] MoneyArray, /// MACADDR - XX:XX:XX:XX:XX:XX, MAC address Macaddr, /// INET - IP address/netmask, host address, netmask optional Inet, - /// BOOL[] + /// BOOL[] BoolArray, - /// BYTEA[] + /// BYTEA[] ByteaArray, - /// CHAR[] + /// CHAR[] CharArray, - /// NAME[] + /// NAME[] NameArray, - /// INT2[] + /// INT2[] Int2Array, - /// INT2VECTOR[] + /// INT2VECTOR[] Int2VectorArray, - /// INT4[] + /// INT4[] Int4Array, - /// REGPROC[] + /// REGPROC[] RegprocArray, - /// TEXT[] + /// TEXT[] TextArray, - /// TID[] + /// TID[] TidArray, - /// XID[] + /// XID[] XidArray, - /// CID[] + /// CID[] CidArray, - /// OIDVECTOR[] + /// OIDVECTOR[] OidVectorArray, - /// BPCHAR[] + /// BPCHAR[] BpcharArray, - /// VARCHAR[] + /// VARCHAR[] VarcharArray, - /// INT8[] + /// INT8[] Int8Array, - /// POINT[] + /// POINT[] PointArray, - /// LSEG[] + /// LSEG[] LsegArray, - /// PATH[] + /// PATH[] PathArray, - /// BOX[] + /// BOX[] BoxArray, - /// FLOAT4[] + /// FLOAT4[] Float4Array, - /// FLOAT8[] + /// FLOAT8[] Float8Array, - /// ABSTIME[] + /// ABSTIME[] AbstimeArray, - /// RELTIME[] + /// RELTIME[] ReltimeArray, - /// TINTERVAL[] + /// TINTERVAL[] TintervalArray, - /// POLYGON[] + /// POLYGON[] PolygonArray, - /// OID[] + /// OID[] OidArray, /// ACLITEM - access control list Aclitem, - /// ACLITEM[] + /// ACLITEM[] AclitemArray, - /// MACADDR[] + /// MACADDR[] MacaddrArray, - /// INET[] + /// INET[] InetArray, - /// BPCHAR - char(length), blank-padded string, fixed storage length + /// BPCHAR - char(length), blank-padded string, fixed storage length Bpchar, - /// VARCHAR - varchar(length), non-blank-padded string, variable storage length + /// VARCHAR - varchar(length), non-blank-padded string, variable storage length Varchar, /// DATE - date Date, @@ -163,61 +164,61 @@ pub enum Type { Time, /// TIMESTAMP - date and time Timestamp, - /// TIMESTAMP[] + /// TIMESTAMP[] TimestampArray, - /// DATE[] + /// DATE[] DateArray, - /// TIME[] + /// TIME[] TimeArray, /// TIMESTAMPTZ - date and time with time zone Timestamptz, - /// TIMESTAMPTZ[] + /// TIMESTAMPTZ[] TimestamptzArray, - /// INTERVAL - @ , time interval + /// INTERVAL - @ <number> <units>, time interval Interval, - /// INTERVAL[] + /// INTERVAL[] IntervalArray, - /// NUMERIC[] + /// NUMERIC[] NumericArray, - /// CSTRING[] + /// CSTRING[] CstringArray, /// TIMETZ - time of day with time zone Timetz, - /// TIMETZ[] + /// TIMETZ[] TimetzArray, /// BIT - fixed-length bit string Bit, - /// BIT[] + /// BIT[] BitArray, /// VARBIT - variable-length bit string Varbit, - /// VARBIT[] + /// VARBIT[] VarbitArray, - /// NUMERIC - numeric(precision, decimal), arbitrary precision number + /// NUMERIC - numeric(precision, decimal), arbitrary precision number Numeric, - /// REFCURSOR - reference to cursor (portal name) + /// REFCURSOR - reference to cursor (portal name) Refcursor, - /// REFCURSOR[] + /// REFCURSOR[] RefcursorArray, - /// REGPROCEDURE - registered procedure (with args) + /// REGPROCEDURE - registered procedure (with args) Regprocedure, /// REGOPER - registered operator Regoper, - /// REGOPERATOR - registered operator (with args) + /// REGOPERATOR - registered operator (with args) Regoperator, /// REGCLASS - registered class Regclass, /// REGTYPE - registered type Regtype, - /// REGPROCEDURE[] + /// REGPROCEDURE[] RegprocedureArray, - /// REGOPER[] + /// REGOPER[] RegoperArray, - /// REGOPERATOR[] + /// REGOPERATOR[] RegoperatorArray, - /// REGCLASS[] + /// REGCLASS[] RegclassArray, - /// REGTYPE[] + /// REGTYPE[] RegtypeArray, /// RECORD Record, @@ -239,15 +240,15 @@ pub enum Type { Opaque, /// ANYELEMENT Anyelement, - /// RECORD[] + /// RECORD[] RecordArray, /// ANYNONARRAY Anynonarray, - /// TXID_SNAPSHOT[] + /// TXID_SNAPSHOT[] TxidSnapshotArray, /// UUID - UUID datatype Uuid, - /// UUID[] + /// UUID[] UuidArray, /// TXID_SNAPSHOT - txid snapshot TxidSnapshot, @@ -255,7 +256,7 @@ pub enum Type { FdwHandler, /// PG_LSN - PostgreSQL LSN datatype PgLsn, - /// PG_LSN[] + /// PG_LSN[] PgLsnArray, /// TSM_HANDLER TsmHandler, @@ -267,23 +268,23 @@ pub enum Type { Tsquery, /// GTSVECTOR - GiST index internal text representation for text search GtsVector, - /// TSVECTOR[] + /// TSVECTOR[] TsVectorArray, - /// GTSVECTOR[] + /// GTSVECTOR[] GtsVectorArray, - /// TSQUERY[] + /// TSQUERY[] TsqueryArray, /// REGCONFIG - registered text search configuration Regconfig, - /// REGCONFIG[] + /// REGCONFIG[] RegconfigArray, /// REGDICTIONARY - registered text search dictionary Regdictionary, - /// REGDICTIONARY[] + /// REGDICTIONARY[] RegdictionaryArray, /// JSONB - Binary JSON Jsonb, - /// JSONB[] + /// JSONB[] JsonbArray, /// ANYRANGE Anyrange, @@ -291,35 +292,35 @@ pub enum Type { EventTrigger, /// INT4RANGE - range of integers Int4Range, - /// INT4RANGE[] + /// INT4RANGE[] Int4RangeArray, /// NUMRANGE - range of numerics NumRange, - /// NUMRANGE[] + /// NUMRANGE[] NumRangeArray, /// TSRANGE - range of timestamps without time zone TsRange, - /// TSRANGE[] + /// TSRANGE[] TsRangeArray, /// TSTZRANGE - range of timestamps with time zone TstzRange, - /// TSTZRANGE[] + /// TSTZRANGE[] TstzRangeArray, /// DATERANGE - range of dates DateRange, - /// DATERANGE[] + /// DATERANGE[] DateRangeArray, /// INT8RANGE - range of bigints Int8Range, - /// INT8RANGE[] + /// INT8RANGE[] Int8RangeArray, /// REGNAMESPACE - registered namespace Regnamespace, - /// REGNAMESPACE[] + /// REGNAMESPACE[] RegnamespaceArray, /// REGROLE - registered role Regrole, - /// REGROLE[] + /// REGROLE[] RegroleArray, /// An unknown type. Other(Other),