summary refs log tree commit diff stats
path: root/examples/talk
diff options
context:
space:
mode:
Diffstat (limited to 'examples/talk')
-rw-r--r--examples/talk/dsl.nim33
-rw-r--r--examples/talk/formatoptimizer.nim55
-rw-r--r--examples/talk/hoisting.nim23
-rw-r--r--examples/talk/lazyeval.nim12
-rw-r--r--examples/talk/quasiquote.nim11
-rw-r--r--examples/talk/tags.nim9
6 files changed, 0 insertions, 143 deletions
diff --git a/examples/talk/dsl.nim b/examples/talk/dsl.nim
deleted file mode 100644
index 2dde51790..000000000
--- a/examples/talk/dsl.nim
+++ /dev/null
@@ -1,33 +0,0 @@
-
-import strutils
-
-template html(name, matter: untyped) =
-  proc name(): string =
-    result = "<html>"
-    matter
-    result.add("</html>")
-
-template nestedTag(tag: untyped) =
-  template tag(matter: typed) =
-    result.add("<" & astToStr(tag) & ">")
-    matter
-    result.add("</" & astToStr(tag) & ">")
-
-template simpleTag(tag: untyped) =
-  template tag(matter: untyped) =
-    result.add("<$1>$2</$1>" % [astToStr(tag), matter])
-
-nestedTag body
-nestedTag head
-nestedTag ul
-simpleTag title
-simpleTag li
-
-html mainPage:
-  head:
-    title "now look at this"
-  body:
-    ul:
-      li "Nim is quite capable"
-
-echo mainPage()
diff --git a/examples/talk/formatoptimizer.nim b/examples/talk/formatoptimizer.nim
deleted file mode 100644
index 6e3d0c2c3..000000000
--- a/examples/talk/formatoptimizer.nim
+++ /dev/null
@@ -1,55 +0,0 @@
-## This is the example that optimizes a modified "hello world"
-
-import macros
-
-proc invalidFormatString() =
-  echo "invalidFormatString"
-
-template formatImpl(handleChar: untyped) =
-  var i = 0
-  while i < f.len:
-    if f[i] == '$':
-      case f[i+1]
-      of '1'..'9':
-        var j = 0
-        i += 1
-        while f[i] in {'0'..'9'}:
-          j = j * 10 + ord(f[i]) - ord('0')
-          i += 1
-        result.add(a[j-1])
-      else:
-        invalidFormatString()
-    else:
-      result.add(handleChar(f[i]))
-      i += 1
-
-proc `%`*(f: string, a: openArray[string]): string =
-  template identity(x: untyped): untyped = x
-  result = ""
-  formatImpl(identity)
-
-macro optFormat{`%`(f, a)}(f: string{lit}, a: openArray[string]): untyped =
-  result = newNimNode(nnkBracket)
-  #newCall("&")
-  let f = f.strVal
-  formatImpl(newLit)
-  result = nestList(newIdentNode("&"), result)
-
-template optAdd1{x = y; add(x, z)}(x, y, z: string) =
-  x = y & z
-
-#template optAdd2{x.add(y); x.add(z)}(x, y, z: string) =
-#  x.add(y & z)
-
-proc `/&` [T: object](x: T): string =
-  result = "("
-  for name, value in fieldPairs(x):
-    result.add("$1: $2\n" % [name, $value])
-  result.add(")")
-
-type
-  MyObject = object
-    a, b: int
-    s: string
-let obj = MyObject(a: 3, b: 4, s: "abc")
-echo(/&obj)
diff --git a/examples/talk/hoisting.nim b/examples/talk/hoisting.nim
deleted file mode 100644
index 54e00884f..000000000
--- a/examples/talk/hoisting.nim
+++ /dev/null
@@ -1,23 +0,0 @@
-type
-  Regex = distinct string
-
-const maxSubpatterns = 10
-
-proc re(x: string): Regex =
-  result = Regex(x)
-
-proc match(s: string, pattern: Regex, captures: var openArray[string]): bool =
-  true
-
-template optRe{re(x)}(x: string{lit}): Regex =
-  var g {.global.} = re(x)
-  g
-
-template `=~`(s: string, pattern: Regex): bool =
-  when not declaredInScope(matches):
-    var matches {.inject.}: array[maxSubPatterns, string]
-  match(s, pattern, matches)
-
-for line in lines("input.txt"):
-  if line =~ re"(\w+)=(\w+)":
-    echo "key-value pair; key: ", matches[0], " value: ", matches[1]
diff --git a/examples/talk/lazyeval.nim b/examples/talk/lazyeval.nim
deleted file mode 100644
index 77d963834..000000000
--- a/examples/talk/lazyeval.nim
+++ /dev/null
@@ -1,12 +0,0 @@
-
-const
-  debug = true
-
-template log(msg: string) =
-  if debug:
-    echo msg
-var
-  x = 1
-  y = 2
-
-log("x: " & $x & ", y: " & $y)
diff --git a/examples/talk/quasiquote.nim b/examples/talk/quasiquote.nim
deleted file mode 100644
index b3c7bb971..000000000
--- a/examples/talk/quasiquote.nim
+++ /dev/null
@@ -1,11 +0,0 @@
-
-import macros
-
-macro check(ex: untyped): typed =
-  var info = ex.lineinfo
-  var expString = ex.toStrLit
-  result = quote do:
-    if not `ex`:
-      echo `info`, ": Check failed: ", `expString`
-
-check 1 < 2
diff --git a/examples/talk/tags.nim b/examples/talk/tags.nim
deleted file mode 100644
index 8bf3450c9..000000000
--- a/examples/talk/tags.nim
+++ /dev/null
@@ -1,9 +0,0 @@
-
-template htmlTag(tag: untyped) =
-  proc tag(): string = "<" & astToStr(tag) & ">"
-
-htmlTag(br)
-htmlTag(html)
-
-echo br()
-echo html()
\ No newline at end of file