StringStream & more stdlib modules support for JS/NimScript (#14095)

* StringStream & more stdlib modules support for JS/NimScript

* change back pegs test in line with #14134
This commit is contained in:
hlaaftana 2020-04-28 20:44:52 +03:00 • committed by GitHub
commit cd9af6b804
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 852 additions and 356 deletions

View file

@ -1,6 +1,6 @@
discard """
targets: "c js"
output: '''
@[]
true
https://example.com/test?format=jpg&name=orig##
https://example.com/test?format=jpg&name=orig##text
@ -40,7 +40,7 @@ block t2813:
"""
var errors: seq[string] = @[]
let tree = parseHtml(newStringStream(html), "test.html", errors)
echo errors # Errors: </thead> expected,...
doAssert errors.len == 0 # Errors: </thead> expected,...
var len = tree.findAll("tr").len # len = 6
var rows: seq[XmlNode] = @[]

View file

@ -1,29 +1,5 @@
discard """
output: '''
utf-8
on
hello
lihf8515
10214028
lihaifeng@wxm.com
===
charset=utf-8
[Package]
name=hello
--threads:on
[Author]
name=lhf
qq=10214028
email="lihaifeng@wxm.com"
===
charset=utf-8
[Package]
name=hello
--threads:on
[Author]
name=lihf8515
qq=10214028
'''
targets: "c js"
"""
import parsecfg, streams
@ -46,24 +22,35 @@ var pname = dict2.getSectionValue("Package","name")
var name = dict2.getSectionValue("Author","name")
var qq = dict2.getSectionValue("Author","qq")
var email = dict2.getSectionValue("Author","email")
echo charset
echo threads
echo pname
echo name
echo qq
echo email
echo "==="
doAssert charset == "utf-8"
doAssert threads == "on"
doAssert pname == "hello"
doAssert name == "lihf8515"
doAssert qq == "10214028"
doAssert email == "lihaifeng@wxm.com"
## Modifying a configuration file.
var dict3 = loadConfig(newStringStream(ss.data))
dict3.setSectionKey("Author","name","lhf")
write(stdout, $dict3)
echo "==="
doAssert $dict3 == """charset=utf-8
[Package]
name=hello
--threads:on
[Author]
name=lhf
qq=10214028
email="lihaifeng@wxm.com"
"""
## Deleting a section key in a configuration file.
var dict4 = loadConfig(newStringStream(ss.data))
dict4.delSectionKey("Author","email")
write(stdout, $dict4)
doAssert $dict4 == """charset=utf-8
[Package]
name=hello
--threads:on
[Author]
name=lihf8515
qq=10214028
"""

View file

@ -1,3 +1,6 @@
discard """
targets: "c js"
"""
import parsesql
doAssert $parseSQL("SELECT foo FROM table;") == "select foo from table;"

View file

@ -1,4 +1,5 @@
discard """
targets: "c js"
output: '''
PEG AST traversal output
------------------------

View file

@ -38,8 +38,8 @@ true
"""
import
critbits, sets, strutils, tables, random, algorithm, re, ropes, segfaults,
lists, parsesql, streams, os, htmlgen, xmltree, strtabs
critbits, cstrutils, sets, strutils, tables, random, algorithm, re, ropes,
segfaults, lists, parsesql, streams, os, htmlgen, xmltree, strtabs
block tcritbits:
@ -245,3 +245,24 @@ block txmltree:
])
])
doAssert(y.innerText == "foobar")
block tcstrutils:
let s = cstring "abcdef"
doAssert s.startsWith("a")
doAssert not s.startsWith("b")
doAssert s.endsWith("f")
doAssert not s.endsWith("a")
let a = cstring "abracadabra"
doAssert a.startsWith("abra")
doAssert not a.startsWith("bra")
doAssert a.endsWith("abra")
doAssert not a.endsWith("dab")
doAssert cmpIgnoreCase(cstring "FooBar", "foobar") == 0
doAssert cmpIgnoreCase(cstring "bar", "Foo") < 0
doAssert cmpIgnoreCase(cstring "Foo5", "foo4") > 0
doAssert cmpIgnoreStyle(cstring "foo_bar", "FooBar") == 0
doAssert cmpIgnoreStyle(cstring "foo_bar_5", "FooBar4") > 0