diff options
author | bptato <nincsnevem662@gmail.com> | 2025-01-22 20:37:13 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-01-22 20:37:13 +0100 |
commit | d1b6b305ac6460d319f48c8b647347eb9bf8435d (patch) | |
tree | 4400a5611c2f17084f596247ca36ffbbf07c205a /src | |
parent | f53a20f12bf07844402ece62c920c8dfbc6cb825 (diff) | |
download | chawan-d1b6b305ac6460d319f48c8b647347eb9bf8435d.tar.gz |
selectorparser: optimize Selector size
Diffstat (limited to 'src')
-rw-r--r-- | src/css/cssparser.nim | 68 | ||||
-rw-r--r-- | src/css/selectorparser.nim | 2 |
2 files changed, 33 insertions, 37 deletions
diff --git a/src/css/cssparser.nim b/src/css/cssparser.nim index e60c340a..621f81c1 100644 --- a/src/css/cssparser.nim +++ b/src/css/cssparser.nim @@ -79,7 +79,7 @@ type CSSRawStylesheet* = object value*: seq[CSSRule] - CSSAnB* = tuple[A, B: int] + CSSAnB* = tuple[A, B: int32] # For debugging proc `$`*(c: CSSComponentValue): string = @@ -768,7 +768,7 @@ proc parseAnB*(state: var CSSParseState): Option[CSSAnB] = template fail_plus = if is_plus: return none(CSSAnB) - template parse_sub_int(sub: string; skip: int): int = + template parse_sub_int(sub: string; skip: int): int32 = let s = sub.substr(skip) let x = parseInt32(s) if x.isNone: @@ -794,95 +794,91 @@ proc parseAnB*(state: var CSSParseState): Option[CSSAnB] = case tok.value of "odd": fail_plus - return some((2, 1)) + return some((2i32, 1i32)) of "even": fail_plus - return some((2, 0)) + return some((2i32, 0i32)) of "n", "N": state.skipWhitespace() if is_eof: - return some((1, 0)) + return some((1i32, 0i32)) let tok2 = get_tok_nows if tok2.t == cttDelim: let sign = case tok2.cvalue - of '+': 1 - of '-': -1 + of '+': 1i32 + of '-': -1i32 else: return none(CSSAnB) let tok3 = get_tok - fail_non_signless_integer tok3, some((1, 0)) - return some((1, sign * int(tok3.nvalue))) + fail_non_signless_integer tok3, some((1i32, 0i32)) + return some((1i32, sign * int32(tok3.nvalue))) else: - fail_non_integer tok2, some((1, 0)) - return some((1, int(tok2.nvalue))) + fail_non_integer tok2, some((1i32, 0i32)) + return some((1i32, int32(tok2.nvalue))) of "-n", "-N": fail_plus state.skipWhitespace() if is_eof: - return some((-1, 0)) + return some((-1i32, 0i32)) let tok2 = get_tok_nows if tok2.t == cttDelim: let sign = case tok2.cvalue - of '+': 1 - of '-': -1 + of '+': 1i32 + of '-': -1i32 else: return none(CSSAnB) let tok3 = get_tok - fail_non_signless_integer tok3, some((-1, 0)) - return some((-1, sign * int(tok3.nvalue))) + fail_non_signless_integer tok3, some((-1i32, 0i32)) + return some((-1i32, sign * int32(tok3.nvalue))) else: - fail_non_integer tok2, some((-1, 0)) - return some((-1, int(tok2.nvalue))) + fail_non_integer tok2, some((-1i32, 0i32)) + return some((-1i32, int32(tok2.nvalue))) of "n-", "N-": let tok2 = get_tok fail_non_signless_integer tok2, none(CSSAnB) - return some((1, -int(tok2.nvalue))) + return some((1i32, -int32(tok2.nvalue))) of "-n-", "-N-": fail_plus let tok2 = get_tok fail_non_signless_integer tok2, none(CSSAnB) - return some((-1, -int(tok2.nvalue))) + return some((-1i32, -int32(tok2.nvalue))) elif tok.value.startsWithIgnoreCase("n-"): - return some((1, -parse_sub_int(tok.value, "n-".len))) + return some((1i32, -parse_sub_int(tok.value, "n-".len))) elif tok.value.startsWithIgnoreCase("-n-"): fail_plus - return some((-1, -parse_sub_int(tok.value, "n-".len))) + return some((-1i32, -parse_sub_int(tok.value, "n-".len))) else: return none(CSSAnB) of cttINumber: fail_plus - if int64(tok.nvalue) > high(int): - return none(CSSAnB) # <integer> - return some((0, int(tok.nvalue))) + return some((0i32, int32(tok.nvalue))) of cttIDimension: fail_plus - if int64(tok.nvalue) > high(int): - return none(CSSAnB) case tok.unit of "n", "N": # <n-dimension> state.skipWhitespace() if is_eof: - return some((int(tok.nvalue), 0)) + return some((int32(tok.nvalue), 0i32)) let tok2 = get_tok_nows if tok2.t == cttDelim: let sign = case tok2.cvalue - of '+': 1 - of '-': -1 + of '+': 1i32 + of '-': -1i32 else: return none(CSSAnB) let tok3 = get_tok - fail_non_signless_integer tok3, some((int(tok.nvalue), 0)) - return some((int(tok.nvalue), sign * int(tok3.nvalue))) + fail_non_signless_integer tok3, some((int32(tok.nvalue), 0i32)) + return some((int32(tok.nvalue), sign * int32(tok3.nvalue))) else: - fail_non_integer tok2, some((int(tok.nvalue), 0)) - return some((int(tok.nvalue), int(tok2.nvalue))) + fail_non_integer tok2, some((int32(tok.nvalue), 0i32)) + return some((int32(tok.nvalue), int32(tok2.nvalue))) of "n-", "N-": # <ndash-dimension> let tok2 = get_tok fail_non_signless_integer tok2, none(CSSAnB) - return some((int(tok.nvalue), -int(tok2.nvalue))) + return some((int32(tok.nvalue), -int32(tok2.nvalue))) elif tok.unit.startsWithIgnoreCase("n-"): # <ndashdigit-dimension> - return some((int(tok.nvalue), -parse_sub_int(tok.unit, "n-".len))) + return some((int32(tok.nvalue), -parse_sub_int(tok.unit, "n-".len))) else: return none(CSSAnB) else: diff --git a/src/css/selectorparser.nim b/src/css/selectorparser.nim index e1dffcea..1aaa9793 100644 --- a/src/css/selectorparser.nim +++ b/src/css/selectorparser.nim @@ -72,10 +72,10 @@ type classs: string of stAttr: attr*: CAtom + rel*: SelectorRelation when defined(debug): attrs: string value*: string - rel*: SelectorRelation of stUniversal: #TODO namespaces? discard of stPseudoClass: |