From d073c81deb72ad10f363973b2e0bebf2ba57d89e Mon Sep 17 00:00:00 2001 From: elpres Date: Wed, 28 Jan 2015 11:19:33 +0100 Subject: [PATCH 01/48] Added missing word --- content/arrays.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/arrays.md b/content/arrays.md index c77329f..1411ba5 100644 --- a/content/arrays.md +++ b/content/arrays.md @@ -4,7 +4,7 @@ title: Arrays # Arrays -The arrays in Nim are like classic C arrays, their size is specified at compile-time and cannot given or changed at runtime. +The arrays in Nim are like classic C arrays, their size is specified at compile-time and cannot be given or changed at runtime. ``` nimrod type From 4d3905dd239f10da0912cf7de94e5fccfd6c798b Mon Sep 17 00:00:00 2001 From: Joey Date: Thu, 29 Jan 2015 16:38:05 +1300 Subject: [PATCH 02/48] Updated oop_macro.nim with some improvements. Added out of order method execution inside the class. Added super-like functionality to call parent methods from child methods. --- content/oop_macro.md | 171 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 136 insertions(+), 35 deletions(-) diff --git a/content/oop_macro.md b/content/oop_macro.md index 3363943..b9452fd 100644 --- a/content/oop_macro.md +++ b/content/oop_macro.md @@ -11,6 +11,7 @@ type Animal = ref object of RootObj name: string age: int method vocalize(this: Animal): string = "..." +method vocalizeAnimal(this: Animal): string = "..." method ageHumanYrs(this: Animal): int = this.age type Dog = ref object of Animal @@ -18,10 +19,14 @@ method vocalize(this: Dog): string = "woof" method ageHumanYrs(this: Dog): int = this.age * 7 type Cat = ref object of Animal -method vocalize(this: Cat): string = "meow" +method vocalize(this: Cat): string = this.vocalize_animal() & "meow" +method vocalizeCat(this: Cat): string = this.vocalize_animal() & "meow" + +type Tiger = ref object of Cat +method vocalize(this: Tiger): string = this.vocalize_animal() & "Rawr!" ``` -All these typedefs and `this: T` parameters are repetitive, so it'd be good to write a macro to mask them. Something like this would be best: +All these typedefs, `this: T` parameters, and extra methods are repetitive, so it'd be good to write a macro to mask them. Something like this would be best: ```nimrod class Animal of RootObj: @@ -35,10 +40,17 @@ class Dog of Animal: method age_human_yrs: int = this.age * 7 class Cat of Animal: - method vocalize: string = "meow" + method vocalize: string = + # call the base class method + this.vocalize_animal() & "meow" + +class Tiger of Cat: + method vocalize: string = + # no need for super.super! + this.vocalize_animal() & "Rawr!" ``` -To get that nice notation, we can use a macro: +To get that nice notation, we can use a macro. Note that this looks pretty complicated, and it is, but it will give us almost full OOP capabilities like other languages such as Java and Python. Here's the macro in all it's glory: ```nimrod import macros @@ -47,6 +59,10 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = # The macro is immediate so that it doesn't # resolve identifiers passed to it + # object reference name inside methods. + # ie: self, this + let obj_reference = "this" + var typeName, baseName: PNimrodNode if head.kind == nnkIdent: @@ -63,7 +79,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = # Infix # Ident !"of" # Ident !"Animal" - # Ident !"RootObj" + # Ident !"TObject" typeName = head[1] baseName = head[2] @@ -111,23 +127,50 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = # var declarations will be turned into object fields var recList = newNimNode(nnkRecList) + # Make forward declarations so that function order + # does not matter, just like in real OOP! + for node in body.children: + case node.kind: + of nnkMethodDef, nnkProcDef: + # inject `this: T` into the arguments + let n = copyNimTree(node) + n.params.insert(1, newIdentDefs(ident(obj_reference), typeName)) + # clear the body so we only get a + # declaration + n.body = newEmptyNode() + result.add(n) + + # forward declare the inheritable method + let n2 = copyNimTree(n) + let proc_name = $(n2.name.toStrLit()) + let type_name = $(typeName.toStrLit()) + let new_name = ident(proc_name & type_name) + n2.name = new_name + result.add(n2) + else: + discard + # Iterate over the statements, adding `this: T` # to the parameters of functions for node in body.children: case node.kind: - of nnkMethodDef, nnkProcDef: # inject `this: T` into the arguments - let p = copyNimTree(node.params) - p.insert(1, newIdentDefs(ident"this", typeName)) - node.params = p + node.params.insert(1, newIdentDefs(ident(obj_reference), typeName)) result.add(node) + # Copy the proc or method for inheritance + # ie: procName_ClassName() + let n2 = copyNimTree(node) + let proc_name = $(n2.name.toStrLit()) + let type_name = $(typeName.toStrLit()) + let new_name = ident(proc_name & type_name) + n2.name = new_name + result.add(n2) of nnkVarSection: # variables get turned into fields of the type. for n in node.children: recList.add(n) - else: result.add(node) @@ -153,19 +196,18 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = # Ident !"int" # Empty - result.insert(0, - if baseName == nil: - quote do: - type `typeName` = ref object - else: - quote do: - type `typeName` = ref object of `baseName` - ) + var type_decl: PNimrodNode + if baseName == nil: + type_decl = quote do: + type `typeName` = ref object of RootObj + else: + type_decl = quote do: + type `typeName` = ref object of `baseName` + # Inspect the tree structure: # - # echo result.treeRepr + # echo type_decl.treeRepr # -------------------- - # StmtList # StmtList # TypeSection # TypeDef @@ -175,28 +217,79 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = # ObjectTy # Empty # OfInherit - # Ident !"RootObj" + # Ident !"TObject" # Empty <= We want to replace this - # MethodDef - # ... - - result[0][0][0][2][0][2] = recList - + type_decl[0][0][2][0][2] = recList + result.insert(0, type_decl) + # Lets inspect the human-readable version of the output # echo repr(result) # Output: - # type + # type # Animal = ref object of RootObj # name: string # age: int # - # method vocalize(this: Animal): string = + # method vocalize(this: Animal): string + # method vocalizeAnimal(this: Animal): string <= this is the magic for calling base class methods + # method age_human_yrs(this: Animal): int + # method age_human_yrsAnimal(this: Animal): int <= this is the magic for calling base class methods + # method vocalize(this: Animal): string = + # "..." + # + # method vocalizeAnimal(this: Animal): string = # "..." # - # method age_human_yrs(this: Animal): int = + # method age_human_yrs(this: Animal): int = # this.age + # + # method age_human_yrsAnimal(this: Animal): int = + # this.age + # + # + # type + # Dog = ref object of Animal + # + # method vocalize(this: Dog): string + # method vocalizeDog(this: Dog): string + # method age_human_yrs(this: Dog): int + # method age_human_yrsDog(this: Dog): int + # method vocalize(this: Dog): string = + # "woof" + # + # method vocalizeDog(this: Dog): string = + # "woof" + # + # method age_human_yrs(this: Dog): int = + # this.age * 7 + # + # method age_human_yrsDog(this: Dog): int = + # this.age * 7 + # + # + # type + # Cat = ref object of Animal + # + # method vocalize(this: Cat): string + # method vocalizeCat(this: Cat): string + # method vocalize(this: Cat): string = + # this.vocalize_animal() & "meow" + # + # method vocalizeCat(this: Cat): string = + # this.vocalize_animal() & "meow" + # + # + # type + # Tiger = ref object of Cat + # + # method vocalize(this: Tiger): string + # method vocalizeTiger(this: Tiger): string + # method vocalize(this: Tiger): string = + # this.vocalize_animal() & "Rawr!" + # + # method vocalizeTiger(this: Tiger): string = + # this.vocalize_animal() & "Rawr!" -# --- class Animal of RootObj: var name: string @@ -209,22 +302,30 @@ class Dog of Animal: method age_human_yrs: int = this.age * 7 class Cat of Animal: - method vocalize: string = "meow" + method vocalize: string = + # call the base class method + this.vocalize_animal() & "meow" -# --- +class Tiger of Cat: + method vocalize: string = + # no need for super.super! + this.vocalize_animal() & "Rawr!" var animals: seq[Animal] = @[] animals.add(Dog(name: "Sparky", age: 10)) animals.add(Cat(name: "Mitten", age: 10)) +animals.add(Tiger(name: "Jean", age: 2)) for a in animals: - echo a.vocalize() + echo a.name, " says ", a.vocalize() echo a.age_human_yrs() ``` ``` console $ nim c -r oopmacro.nim -woof +Sparky says woof 70 -meow +Mitten says ...meow 10 +Jean says ...Rawr! +2 ``` From e39bada92d17a362f8b4485166dd27cb600b71af Mon Sep 17 00:00:00 2001 From: Joey Date: Thu, 29 Jan 2015 20:03:20 +1300 Subject: [PATCH 03/48] Made generated code more concise in oop_macro.nim --- content/oop_macro.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/content/oop_macro.md b/content/oop_macro.md index b9452fd..03d1e6a 100644 --- a/content/oop_macro.md +++ b/content/oop_macro.md @@ -156,17 +156,29 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = case node.kind: of nnkMethodDef, nnkProcDef: # inject `this: T` into the arguments - node.params.insert(1, newIdentDefs(ident(obj_reference), typeName)) - result.add(node) + let n = copyNimTree(node) + n.params.insert(1, newIdentDefs(ident(obj_reference), typeName)) # Copy the proc or method for inheritance # ie: procName_ClassName() let n2 = copyNimTree(node) + n2.params.insert(1, newIdentDefs(ident(obj_reference), typeName)) let proc_name = $(n2.name.toStrLit()) let type_name = $(typeName.toStrLit()) let new_name = ident(proc_name & type_name) n2.name = new_name result.add(n2) + + # simply call the class method from here + # proc procName= + # procName_ClassName() + var p: seq[PNimrodNode] = @[] + for i in 1..n.params.len-1: + p.add(n.params[i][0]) + n.body = newStmtList(newCall(proc_name & type_name, p)) + + result.add(n) + of nnkVarSection: # variables get turned into fields of the type. for n in node.children: From 375db8c398fd23aa81b21f55c8bf13da33fbdad1 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Sun, 1 Feb 2015 20:09:55 -0500 Subject: [PATCH 04/48] Make base types `object of RootObj` Thanks to @jyapayne for noticing this in #29! --- content/oop_macro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/oop_macro.md b/content/oop_macro.md index 3363943..f011e0c 100644 --- a/content/oop_macro.md +++ b/content/oop_macro.md @@ -156,7 +156,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = result.insert(0, if baseName == nil: quote do: - type `typeName` = ref object + type `typeName` = ref object of RootObj else: quote do: type `typeName` = ref object of `baseName` From 4ed8b34d0f05391acbbcb7fc3e51a32f16bcd2bd Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Sun, 1 Feb 2015 20:14:08 -0500 Subject: [PATCH 05/48] Fix #20 See #20 for context: > allows the procedure to be stored in a variable and called correctly (even with default parameters). > As said by Araq on IRC: >> 'procvar' doesn't do much [...] it's just another check for semantic checking. codegen is not affected. --- content/procvars.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/procvars.md b/content/procvars.md index 53c6ad1..12a6921 100644 --- a/content/procvars.md +++ b/content/procvars.md @@ -20,10 +20,10 @@ $ nim c -r filterclosure.nim @[64, 128, 256] ``` -Existing procedures can also be passed as functions, but only if they are annotated with the `{.procvar.}` pragma. +Existing procedures can also be passed as functions, but only if they are annotated with the `{.procvar.}` pragma. This is because there may be default parameters, which must be specially handled by the compiler. ``` nimrod proc greaterThan32(x: int): bool {.procvar.} = x > 32 echo powersOfTwo.filter(greaterThan32) -``` \ No newline at end of file +``` From a7b81163572b21473fadd81420e2cbac83d8e730 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Sun, 8 Feb 2015 16:21:41 -0500 Subject: [PATCH 06/48] Rename nimrod-by-example.sublime-project to nim-by-example.sublime-project --- ...by-example.sublime-project => nim-by-example.sublime-project | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename nimrod-by-example.sublime-project => nim-by-example.sublime-project (99%) diff --git a/nimrod-by-example.sublime-project b/nim-by-example.sublime-project similarity index 99% rename from nimrod-by-example.sublime-project rename to nim-by-example.sublime-project index 2e57953..5119fb6 100644 --- a/nimrod-by-example.sublime-project +++ b/nim-by-example.sublime-project @@ -26,4 +26,4 @@ "working_dir": "$project_path/" } ] -} \ No newline at end of file +} From 07cc8f6600de0903c2dd9f509650df3d3dce06b9 Mon Sep 17 00:00:00 2001 From: pyloor Date: Sun, 15 Mar 2015 02:35:51 +0100 Subject: [PATCH 07/48] Update oop.md --- content/oop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/oop.md b/content/oop.md index 4befd90..2e3870c 100644 --- a/content/oop.md +++ b/content/oop.md @@ -4,7 +4,7 @@ title: Object Oriented Programming # Object Oriented Programming -Object oriented programming is supported through inheritance and methods, which are virtual procedures. Methods work in the same was as [procs](/procs/), including UFCS, but the runtime type of the object that a method is called with is used to determine which version to call. +Object oriented programming is supported through inheritance and methods, which are virtual procedures. Methods work in the same way as [procs](/procs/), including UFCS, but the runtime type of the object that a method is called with is used to determine which version to call. Inheritance is created with the `of` keyword in the type declaration of an object. A method is overridden by creating a new method with parameter types of the subtype. From 4fe1376fcec0f35a135908e06b2fa4a9dd53113d Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 15:54:14 -0400 Subject: [PATCH 08/48] Remove personal configuration --- nim-by-example.sublime-project | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 nim-by-example.sublime-project diff --git a/nim-by-example.sublime-project b/nim-by-example.sublime-project deleted file mode 100644 index 5119fb6..0000000 --- a/nim-by-example.sublime-project +++ /dev/null @@ -1,29 +0,0 @@ -{ - "folders": - [ - { "path": "content" }, - { "path": "layouts" }, - { "path": "lib" }, - { - "path": "./", - "folder_exclude_patterns": ["output", - "tmp", - "content", - "layouts", - "lib"] - } - ], - "build_systems": - [ - { - "name": "View", - "cmd": ["./view"], - "working_dir": "$project_path/" - }, - { - "name": "Compile", - "cmd": ["nanoc"], - "working_dir": "$project_path/" - } - ] -} From e253f7969849d5b06ae0a38bc2885e84de814f08 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 16:00:29 -0400 Subject: [PATCH 09/48] Make statement clearer --- content/case.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/case.md b/content/case.md index fc64a76..765fb0c 100644 --- a/content/case.md +++ b/content/case.md @@ -54,7 +54,7 @@ Another feature of case statements is that the possible values are narrowed, mea ``` nimrod let x = 2 -case (x and 3) + 7: +case (x and 0b11) + 7: of 7: echo "A" of 8: echo "B" of 9: echo "C" From cdb74e8e4f0c42f0ae7574e9cf3d1f9362024ec5 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 16:11:39 -0400 Subject: [PATCH 10/48] Fixed mixed content --- layouts/default.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/default.html b/layouts/default.html index 1a2f879..ce0db98 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -3,7 +3,7 @@ Nim by Example - <%= @item[:title] %> - + From dfd0f80a196a428d9fde2ae7cb40c5ebade5e915 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 16:14:16 -0400 Subject: [PATCH 11/48] Handle compiler failure on windows Fixes #32 --- content/getting_started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/getting_started.md b/content/getting_started.md index 867064a..7eb8336 100644 --- a/content/getting_started.md +++ b/content/getting_started.md @@ -7,7 +7,7 @@ When installing Nim, you have two options: downloading a copy directly from git, ## Downloading a Nim Distribution To get started with Nim, head over to the [downloads page](http://nim-lang.org/download.html) and download the version you'd like. -The Windows distribution comes with the MinGW compiler, which is recommended, but if you'd like to use your own compiler, download the version without MinGW. +The Windows distribution comes with the MinGW compiler, which is recommended, but if you'd like to use your own compiler, download the version without MinGW. If you get an error like `Error: unhandled exception: The system cannot find the file specified.`, then make sure that the C compiler is on your path. On Mac and Linux, it is recommended to use either GCC or Clang. From 440cba53d339118846feb75111b83a2c4459244c Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 17:15:48 -0400 Subject: [PATCH 12/48] Add hyphenation --- Rules | 5 ++- content/js/hypth.js | 68 ++++++++++++++++++++++++++++++++++++ content/js/hypth_loader.js | 13 +++++++ content/js/main.js | 30 ++++++++++++++++ content/stylesheets/main.css | 8 +++++ layouts/default.html | 54 ++++++++++------------------ 6 files changed, 141 insertions(+), 37 deletions(-) create mode 100644 content/js/hypth.js create mode 100644 content/js/hypth_loader.js create mode 100644 content/js/main.js diff --git a/Rules b/Rules index e2b5ac4..a589b7b 100644 --- a/Rules +++ b/Rules @@ -23,7 +23,8 @@ compile '*' do filter :relativize_paths, :type => :html layout 'default' elsif item[:extension] == 'css' - # don’t filter stylesheets + elsif item[:extension] == 'js' + # don’t filter stylesheets, js elsif item.binary? # don’t filter binary items else @@ -36,6 +37,8 @@ route '*' do if item[:extension] == 'css' # Write item with identifier /foo/ to /foo.css item.identifier.chop + '.css' + elsif item[:extension] == 'js' + item.identifier.chop + '.js' elsif item.binary? # Write item with identifier /foo/ to /foo.ext item.identifier.chop + '.' + item[:extension] diff --git a/content/js/hypth.js b/content/js/hypth.js new file mode 100644 index 0000000..069e0c7 --- /dev/null +++ b/content/js/hypth.js @@ -0,0 +1,68 @@ +/* + Hyphenator 5.0.0 - client side hyphenation for webbrowsers + Copyright (C) 2015 Mathias Nater, Zürich (mathiasnater at gmail dot com) + https://github.com/mnater/Hyphenator + + Released under the MIT license + http://mnater.github.io/Hyphenator/LICENSE.txt +*/ +var l=function(f){function Ia(){var a;k.test("config")&&(a=f.JSON.parse(k.getItem("config")),l.w(a))}function xa(){k&&k.setItem("config",f.JSON.stringify({STORED:!0,classname:L,urlclassname:U,donthyphenateclassname:H,minwordlength:B,hyphenchar:C,urlhyphenchar:F,togglebox:V,displaytogglebox:ea,remoteloading:fa,enablecache:K,enablereducedpatternset:M,onhyphenationdonecallback:W,onerrorhandler:D,onwarninghandler:ga,intermediatestate:I,selectorfunction:X||ha,safecopy:N,doframes:O,storagetype:P,orphancontrol:Q, +dohyphenation:l.g,persistentconfig:ia,defaultlanguage:Y,useCSS3hyphenation:J,unhide:R,onbeforewordhyphenation:ja,onafterwordhyphenation:ka}))}function ya(){var a;try{if("none"!==P&&void 0!==f.JSON&&void 0!==f.localStorage&&void 0!==f.sessionStorage&&void 0!==f.JSON.stringify&&void 0!==f.JSON.parse){switch(P){case "session":a=f.sessionStorage;break;case "local":a=f.localStorage;break;default:a=void 0}a.setItem("storageTest","1");a.removeItem("storageTest")}}catch(c){a=void 0}k=a?{prefix:"Hyphenator_"+ +l.version+"_",D:a,n:{},test:function(a){return this.D.getItem(this.prefix+a)?!0:!1},getItem:function(a){a=this.D.getItem(this.prefix+a);return a=a.replace(/-(\d{2,}|[2-9])/g,function(a,b){var c=parseInt(b,10),h="";if(String.prototype.repeat)h="0,".repeat(c-1);else for(;1>1)+1+","});try{this.D.setItem(this.prefix+a,c)}catch(e){D(e)}}}:void 0}function Ja(){t.o(function(a){var c,b=a.length; +for(c=0;c=B&&(e.data=e.data.replace(h.p,d),1!==Q&&(e.data=e.data.replace(/[\S]+ [\S]+[\s]*$/,Ka))),g+=1,e=b.childNodes[g];"hidden"===I&&"wait"===R&&(b.className=b.className.replace(Ca,""),""===b.className&&b.removeAttribute("class"));"hidden"===I&&"progressive"===R&&(b.className=b.className.replace(Ca," "+pa));c.r=!0;t.q+=1;t.count<=t.q&&La()}function Ka(a){var c,b;switch(C){case "|":c="\\|";break;case "+":c="\\+";break;case "*":c= +"\\*";break;default:c=C}a=a.replace(/[\s]*$/,"");2<=Q&&(b=a.split(" "),b[1]=b[1].replace(new RegExp(c,"g"),""),b[1]=b[1].replace(new RegExp(Da,"g"),""),b=b.join(" "));3===Q&&(b=b.replace(/[ ]+/g,String.fromCharCode(160)));return b}function La(){var a=!0,c,b={},d;t.o(function(c){var d,h=c.length;for(d=0;daa[f+m]&&(aa[f+m]=k[p+1+m]);if(M){a.u||(a.u={});q=k.subarray?k.subarray(p+1,p+1+k[p]):k.slice(p+1,p+1+k[p]);p=a.u;m=g;for(var w=[],x=g.split(""),t=void 0,t=0;t<=x.length;t+=1)q[t]&&0!==q[t]&&w.push(q[t]),x[t]&&w.push(x[t]);p[m]=w.join("")}}if(0=a.K&&m<=d-a.M&&0!==aa[m+1]%2?e+(C+b.charAt(m)):e+b.charAt(m)}e=ka(e,c);K&&(a.cache[b]=e);return e}function V(){var a,c;c=l.g?"Hy-phen-a-tion":"Hyphenation";var b=v.document.getElementById("HyphenatorToggleBox"); +b?b.firstChild.data=c:(a=v.document.getElementsByTagName("body")[0],b=ba("div",v),b.setAttribute("id","HyphenatorToggleBox"),b.setAttribute("class",H),c=v.document.createTextNode(c),b.appendChild(c),b.onclick=l.Z,b.style.position="absolute",b.style.top="0px",b.style.right="0px",b.style.margin="0",b.style.backgroundColor="#AAAAAA",b.style.color="#FFFFFF",b.style.font="6pt Arial",b.style.letterSpacing="0.2em",b.style.padding="3px",b.style.cursor="pointer",b.style.WebkitBorderBottomLeftRadius="4px", +b.style.MozBorderRadiusBottomleft="4px",b.style.borderBottomLeftRadius="4px",a.appendChild(b))}function Na(a){function c(){for(var b in E)E.hasOwnProperty(b)&&l.a.hasOwnProperty(b)&&(delete E[b],qa(b),a(b))}var b,d,e;if(fa){for(b in E)if(E.hasOwnProperty(b))if(k&&k.test(b)){l.a[b]=f.JSON.parse(k.getItem(b));Object.prototype.hasOwnProperty.call(f,"Int32Array")&&(l.a[b].b=new f.Int32Array(l.a[b].b),l.a[b].m.keys=new f.Uint8Array(l.a[b].m.keys));if(w.hasOwnProperty("global"))for(e in d=ra(w.global), +d)d.hasOwnProperty(e)&&(l.a[b].c[e]=d[e]);if(w.hasOwnProperty(b)){d=ra(w[b]);for(e in d)d.hasOwnProperty(e)&&(l.a[b].c[e]=d[e]);delete w[b]}d=String().normalize?"[\\w"+l.a[b].h+l.a[b].h.normalize("NFD")+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+B+",}":"[\\w"+l.a[b].h+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+B+",}";l.a[b].p=new RegExp("("+d+")|((?:\\w*://)?(?:(?:\\w*:)?(?:\\w*)@)?(?:(?:(?:[\\d]{1,3}\\.){3}(?:[\\d]{1,3}))|(?:(?:www\\.|[a-zA-Z]\\.)?[a-zA-Z0-9\\-\\.]+\\.(?:[a-z]{2,4})))(?::\\d*)?(?:/[\\w#!:\\.?\\+=&%@!\\-]*)*)|([\\w-\\.]+@[\\w\\.]+)", +"gi");K&&!l.a[b].cache&&(l.a[b].cache={});delete E[b];a(b)}else Oa(b,c);c()}else{for(b in l.a)l.a.hasOwnProperty(b)&&qa(b);a("*")}}function qa(a){var c=l.a[a],b;c.t||(K&&(c.cache={}),M&&(c.u={}),c.hasOwnProperty("exceptions")&&(l.N(a,c.c),delete c.c),w.hasOwnProperty("global")&&(w[a]=w.hasOwnProperty(a)?w[a]+(", "+w.global):w.global),w.hasOwnProperty(a)?(c.c=ra(w[a]),delete w[a]):c.c={},Pa(c),b=String().normalize?"[\\w"+c.h+c.h.normalize("NFD")+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+ +B+",}":"[\\w"+c.h+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+B+",}",c.p=new RegExp("("+b+")|((?:\\w*://)?(?:(?:\\w*:)?(?:\\w*)@)?(?:(?:(?:[\\d]{1,3}\\.){3}(?:[\\d]{1,3}))|(?:(?:www\\.|[a-zA-Z]\\.)?[a-zA-Z0-9\\-\\.]+\\.(?:[a-z]{2,4})))(?::\\d*)?(?:/[\\w#!:\\.?\\+=&%@!\\-]*)*)|([\\w-\\.]+@[\\w\\.]+)","gi"),c.t=!0);k&&(k.n.G=function(){k.setItem(a,f.JSON.stringify({j:{k:c.j.k},H:c.H,c:c.c,b:Array.prototype.slice.call(c.b),K:c.K,t:c.t,M:c.M,h:c.h,m:{keys:Array.prototype.slice.call(c.m.keys)}}))})} +function Oa(a,c){var b,d,e,g,h=!1;if(y.hasOwnProperty(a)&&!l.a[a]){b=ca+"patterns/"+y[a].file;if(Qa&&!S){d=null;try{d=new f.XMLHttpRequest}catch(r){try{d=new f.ActiveXObject("Microsoft.XMLHTTP")}catch(ma){try{d=new f.ActiveXObject("Msxml2.XMLHTTP")}catch(u){d=null}}}d&&(d.open("HEAD",b,!0),d.setRequestHeader("Cache-Control","no-cache"),d.onreadystatechange=function(){2===d.readyState&&(400<=d.status?(D(Error("Could not load\n"+b)),delete E[a]):d.abort())},d.send(null))}ba&&(e=f.document.getElementsByTagName("head").item(0), +g=ba("script",f),g.src=b,g.type="text/javascript",g.charset="utf8",g.onload=g.onreadystatechange=function(){h||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(h=!0,c(),g.onload=g.onreadystatechange=null,e&&g.parentNode&&e.removeChild(g))},e.appendChild(g))}}function ra(a){a=a.split(", ");var c={},b,d,e;b=0;for(d=a.length;b=m?(e.add(m-48),k=!0):(k||e.add(0),k=!1,-1===q&&(c=q=c+h,g[p+2*n]=q),n=d[m],p=q,q=g[p+2*n],0===q&&(q=g[p+2*n]=-1)):(49<=m&&57>=m?e.add(m-48): +(k||e.add(0),e.add(0),-1===q&&(c=q=c+h,g[p+2*n]=q),n=d[m],p=q,0===g[p+2*n]&&(g[p+2*n]=-1)),g[p+2*n+1]=e.O(),q=p=0,k=!1)}function Sa(a){this.keys=function(){var c,b;if(Object.prototype.hasOwnProperty.call(f,"Uint8Array"))return new f.Uint8Array(a);b=[];b.length=a;for(c=b.length-1;0<=c;--c)b[c]=0;return b}();this.C=1;this.B=this.l=2;this.add=function(a){0!==a&&(this.keys[this.l]=a,this.B=this.l);this.l+=1};this.O=function(){var a=this.C;this.keys[a]=this.B-a;this.C=this.B+1;this.l=this.C+1;return a}} +function Ra(){this.A=[];this.k={};this.add=function(a){this.k[a]||(this.A.push(a),this.k[a]=this.A.length-1)}}function Ta(){function a(b){var c,e=0;for(c=b.childNodes[e];c;)1!==c.nodeType||sa[c.nodeName.toLowerCase()]||-1!==c.className.indexOf(H)||-1!==c.className.indexOf(L)||d[c]?3===c.nodeType&&(c.data=na(c.data)):a(c),e+=1,c=b.childNodes[e]}function c(a,d,e){function g(){S&&q!==x||(y.hasOwnProperty(q)?E[q]=!0:y.hasOwnProperty(q.split("-")[0])?(q=q.split("-")[0],E[q]=!0):S||(p=!1,D(Error('Language "'+ +q+'" is not yet supported.'))),p&&("hidden"===I&&(a.className=a.className+" "+ta),t.add(a,q)))}function f(){G=new Fa(v);G.e("."+T,z.d+": auto;");G.e("."+H,z.d+": manual;");q!==d&&-1!==z.d.indexOf("webkit")&&G.e("."+T,"-webkit-locale : "+q+";");a.className=a.className+" "+T}e=e||!1;var n=0,p=!0,q;q=a.lang&&"string"===typeof a.lang?a.lang.toLowerCase():d&&""!==d?d.toLowerCase():ua(a,!0);e?q!==d?J&&z.i&&z.f(q)?f():g():J&&z.i&&z.f(q)||g():J&&z.i&&z.f(q)?f():g();for(e=a.childNodes[n];e;)1!==e.nodeType|| +sa[e.nodeName.toLowerCase()]||-1!==e.className.indexOf(H)||-1!==e.className.indexOf(U)||b[e]||c(e,q,!0),n+=1,e=a.childNodes[n]}var b,d,e,g=0;J&&Ua();if(S)b=v.document.getElementsByTagName("body")[0],c(b,x,!1);else{J||"hidden"!==I||(A.push(new Fa(v)),A[A.length-1].e("."+L,"visibility: hidden;"),A[A.length-1].e("."+ta,"visibility: hidden;"),A[A.length-1].e("."+pa,"visibility: visible;"));b=Va();for(e=b[g];e;)c(e,"",!1),g+=1,e=b[g];d=ha(U);g=0;for(e=d[g];e;)a(e),g+=1,e=d[g]}if(0===t.count){for(g=0;g< +A.length;g+=1)A[g].I();W(v.location.href)}}function Ga(a){a=a||v;var c=a.document.getElementsByTagName("html")[0],b=a.document.getElementsByTagName("meta"),d;x=ua(c,!1);if(!x)for(d=0;d2*B&&(a[c]=a[c].replace(/(\w{3})(\w)/gi,"$1"+F+"$2"));""===a[a.length-1]&&a.pop();return a.join(F)}function Fa(a){function c(a,b){var c;d.insertRule?(c=d.cssRules?d.cssRules.length:0,c=d.insertRule(a+"{"+b+"}",c)):d.addRule&&(c=d.rules?d.rules.length:0,d.addRule(a, +b,c));return c}a=a||f;var b=a.document,d=function(){var a,c=b.styleSheets.length,d,e=!1;for(a=0;a=B?d.data=d.data.replace(f.p,b):1===d.nodeType&&(""!==d.lang?l.J(d,d.lang):l.J(d,c)),e+=1,d=a.childNodes[e];else{if("string"=== +typeof a||a.constructor===String)return a.replace(f.p,b)}else D(Error('Language "'+c+'" is not loaded.'))},da:function(a){return l.a[a].u},S:function(){return S},P:function(){var a=null,c={},b=v.document.getElementsByTagName("script"),d,e;d=0;for(e=b.length;d - + Nim by Example - <%= @item[:title] %> @@ -8,7 +8,6 @@ - + +
+ +

+ + +
+
+

+ <%= yield %> +
+ + + + + From 9c62e0e844547b90585d374c56e190eb31ed874e Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 17:44:02 -0400 Subject: [PATCH 13/48] Delete dead page --- content/opengl/triangle.md | 132 ------------------------------------- 1 file changed, 132 deletions(-) delete mode 100644 content/opengl/triangle.md diff --git a/content/opengl/triangle.md b/content/opengl/triangle.md deleted file mode 100644 index 5da0d17..0000000 --- a/content/opengl/triangle.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: OpenGL - Triangle ---- -# OpenGL: Triangle - -The following code depends on the ``opengl`` and ``nim-glfw`` packages which -can be installed via babel by executing ``babel install opengl@#head nim-glfw@#head``. -You will need the GLFW DLL in order to run this on Windows. - -![Triangle Windows](https://nim-by-example.github.io/images/triangle.png) - -One thing to keep in mind when writing OpenGL code in Nim is that ``float`` -is actually ``float64``. But vertices must be ``float32`` so you must explicitly -specify that by casting or using ``'f32`` as is done in the example. - -```nimrod -import os, glfw/glfw, opengl, times, math - -proc assertShader(shader: GLuint) = - var status: GLint - glGetShaderiv(shader, GL_COMPILE_STATUS, addr status) - if status != GL_TRUE: - var buff: array[512, char] - glGetShaderInfoLog(shader, 512, nil, buff) - echo(buff) - assert false - -const - vertexSource = """ -#version 150 - -in vec2 position; -in vec3 color; - -out vec3 Color; - -void main() -{ - Color = color; - gl_Position = vec4(position, 0.0, 1.0); -} -""" - fragmentSource = """ -#version 150 - -in vec3 Color; - -out vec4 outColor; - -void main() -{ - outColor = vec4(Color, 1.0); -} -""" - - -proc setup(shaderProgram: var TGLUint) = - var vertices = [ - 0.0'f32, 0.5, 1, 0, 0, - 0.5, -0.5, 0, 1, 0, - -0.5, -0.5, 0, 0, 1 - ] - echo(vertices.repr) - var vertexBuffer: GLuint - glGenBuffers(1, addr vertexBuffer) - echo("Verter Buff: ", vertexBuffer) - - var vertexArray: GLuint - glGenVertexArrays(1, addr vertexArray) - glBindVertexArray(vertexArray) - - - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer) - glBufferData(GL_ARRAY_BUFFER, sizeof(vertices).int32, addr vertices, - GL_STATIC_DRAW) - - var vertexShader = glCreateShader(GL_VERTEX_SHADER) - var vertexSrcArray = [vertexSource.cstring] - glShaderSource(vertexShader, 1, cast[cstringArray](addr vertexSrcArray), nil) - glCompileShader(vertexShader) - assertShader(vertexShader) - - var fragmentShader = glCreateShader(GL_FRAGMENT_SHADER) - var fragmentSrcArray = [fragmentSource.cstring] - glShaderSource(fragmentShader, 1, cast[cstringArray](addr fragmentSrcArray), - nil) - glCompileShader(fragmentShader) - assertShader(fragmentShader) - - shaderProgram = glCreateProgram() - glAttachShader(shaderProgram, vertexShader) - glAttachShader(shaderProgram, fragmentShader) - - # Apparently this is not necessary according to http://open.gl - glBindFragDataLocation(shaderProgram, 0, "outColor") - - glLinkProgram(shaderProgram) - glUseProgram(shaderProgram) - - # Vertex data <-> attributes - var posAttrib = glGetAttribLocation(shaderProgram, "position").gluint - glEnableVertexAttribArray(posAttrib) - glVertexAttribPointer(posAttrib, 2, cGL_FLOAT, false, - 5*sizeof(GLFloat).int32, nil) - - var colAttrib = glGetAttribLocation(shaderProgram, "color").gluint - glEnableVertexAttribArray(colAttrib) - glVertexAttribPointer(colAttrib, 3, cGL_FLOAT, false, - 5*sizeof(GLFloat).int32, - cast[pointer](2*sizeof(GLFloat))) - -when isMainModule: - glfw.init() - var win = newWin() - win.makeContextCurrent() - - loadExtensions() - - var shaderProgram: TGLuint - setup(shaderProgram) - - while not win.shouldClose: - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) - - glDrawArrays(GL_TRIANGLES, 0, 3) - win.swapBufs() - - pollEvents() - - win.destroy() - glfw.terminate() -``` From 0fd94db2e673f95eed478853449885c5221814b5 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 17:52:54 -0400 Subject: [PATCH 14/48] Expand on strings See #21 --- content/strings.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/content/strings.md b/content/strings.md index dfaf6c2..58b3eb1 100644 --- a/content/strings.md +++ b/content/strings.md @@ -16,7 +16,7 @@ echo """ proc re(s: string): string = s -echo r" "" " +echo r".""." echo re"\b[a-z]++\b" ``` ``` console @@ -29,17 +29,23 @@ words words words ⚑ - " +.". \b[a-z]++\b ``` -There are several types of strings literals: +There are several types of string literals: - Quoted Strings: Created by wrapping the body in triple quotes, they never interpret escape codes - - Raw Strings: created by prefixing the string with an `r`. There are no escape sequences don't work, except for `"`, which can be escaped as `""` - - Proc Strings: raw strings, but the method name that prefixes the string is called + - Raw Strings: created by prefixing the string with an `r`. They do not interpret escape sequences, except for `""`, which is interpreted as `"`. This means that `r"\b[a-z]\b"` is interpreted as `\b[a-z]\b` instead of failing to compile with a syntax error. + - Proc Strings: raw strings, but the method name that prefixes the string is called, so that `foo"12\"` -> `foo(r"12\")`. + +Strings are null-terminated, so that `cstring("foo")` requires zero copying. However, you should be careful that the lifetime of the cstring does not exceed the lifetime of the string it is based upon. + +Strings can also almost be thought of as `seq[char]` with respect to assignment semantics. See [seqs][] + +[seqs]: /seqs/#immutability ## A note about unicode Unicode symbols are allowed in strings, but are not treated in any special way, so if you want count glyphs or uppercase unicode symbols, you must use the `unicode` module. -Strings are generally considered to be encoded as UTF-8, so because of unicode's backwards compatibility, can be treated exactly as ASCII, with all values above 127 ignored. \ No newline at end of file +Strings are generally considered to be encoded as UTF-8, so because of unicode's backwards compatibility, can be treated exactly as ASCII, with all values above 127 ignored. From 063a45c1dae9d44d57558d2dc13e8055891ad4e9 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 18:00:25 -0400 Subject: [PATCH 15/48] Fix code shadows Shadows were getting clipped, fix it. --- content/stylesheets/main.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/stylesheets/main.css b/content/stylesheets/main.css index b9ccdd7..b6e1e96 100644 --- a/content/stylesheets/main.css +++ b/content/stylesheets/main.css @@ -115,6 +115,10 @@ a:hover { padding: 0px 3px; } +pre { + overflow: visible; +} + #main pre code { /* Block Code */ display: block; word-wrap: break-word; From 62b6e467025dc2d92cb181fab147288cfecfebb5 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 27 Apr 2015 18:17:50 -0400 Subject: [PATCH 16/48] Disable hyphenation `pre code span` is hyphenated, even though it is below a `pre` element. This might be a bug in Hyphenate.js --- layouts/default.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/layouts/default.html b/layouts/default.html index 57d2c44..044b706 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -46,8 +46,6 @@ - - From b71202faf2561c4989d3c50c54b0c6f61e89b5ad Mon Sep 17 00:00:00 2001 From: Jon Renner Date: Fri, 22 May 2015 23:25:05 -0500 Subject: [PATCH 17/48] fix typo --- content/block.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/block.md b/content/block.md index 05e591b..2ea8acc 100644 --- a/content/block.md +++ b/content/block.md @@ -6,7 +6,7 @@ title: Blocks Blocks can be introduced in two different ways: by indenting statements or with `()`s. -The first way ist to use indenting, e.g. using `if-elif-else`, `while`, `for` statements, or the `block` statement. +The first way is to use indenting, e.g. using `if-elif-else`, `while`, `for` statements, or the `block` statement. ``` nimrod if true: From 5986e1f090c747f8719a313458f3afbab6abb447 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Mon, 25 May 2015 19:43:09 -0400 Subject: [PATCH 18/48] Delete opengl assets --- content/images/triangle.png | Bin 107661 -> 0 bytes content/toc.md | 1 - 2 files changed, 1 deletion(-) delete mode 100644 content/images/triangle.png diff --git a/content/images/triangle.png b/content/images/triangle.png deleted file mode 100644 index 985a136b3c724972975dd75c5937f7c515956e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107661 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 diff --git a/content/toc.md b/content/toc.md index 57c6767..6fe0479 100644 --- a/content/toc.md +++ b/content/toc.md @@ -24,5 +24,4 @@ * [Object Oriented Programming](/oop/) * [OOP Macro](/oop_macro/) - {: #toc-list} From a57027acdd5067379419ad30203d02fdb4c65d31 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 14:37:30 -0400 Subject: [PATCH 19/48] Lots of big formatting changes --- Rules | 2 + content/footer.md | 2 + content/js/hypth.js | 68 --------- content/js/hypth_loader.js | 13 -- content/js/main.js | 59 +++++--- content/stylesheets/main.css | 271 ++++++++++++----------------------- content/toc.md | 2 - layouts/default.html | 27 ++-- 8 files changed, 142 insertions(+), 302 deletions(-) create mode 100644 content/footer.md delete mode 100644 content/js/hypth.js delete mode 100644 content/js/hypth_loader.js diff --git a/Rules b/Rules index a589b7b..d28e143 100644 --- a/Rules +++ b/Rules @@ -17,6 +17,8 @@ compile '*' do if item.identifier == '/toc/' filter :kramdown layout 'blank' + elsif item.identifier == '/footer/' + layout 'blank' elsif item[:extension] == 'md' filter :kramdown, {:input => 'GFM'} filter :colorize_syntax, :default_colorizer => :pygmentize diff --git a/content/footer.md b/content/footer.md new file mode 100644 index 0000000..c468e89 --- /dev/null +++ b/content/footer.md @@ -0,0 +1,2 @@ +
  • Github
  • Contribute
  • diff --git a/content/js/hypth.js b/content/js/hypth.js deleted file mode 100644 index 069e0c7..0000000 --- a/content/js/hypth.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - Hyphenator 5.0.0 - client side hyphenation for webbrowsers - Copyright (C) 2015 Mathias Nater, Zürich (mathiasnater at gmail dot com) - https://github.com/mnater/Hyphenator - - Released under the MIT license - http://mnater.github.io/Hyphenator/LICENSE.txt -*/ -var l=function(f){function Ia(){var a;k.test("config")&&(a=f.JSON.parse(k.getItem("config")),l.w(a))}function xa(){k&&k.setItem("config",f.JSON.stringify({STORED:!0,classname:L,urlclassname:U,donthyphenateclassname:H,minwordlength:B,hyphenchar:C,urlhyphenchar:F,togglebox:V,displaytogglebox:ea,remoteloading:fa,enablecache:K,enablereducedpatternset:M,onhyphenationdonecallback:W,onerrorhandler:D,onwarninghandler:ga,intermediatestate:I,selectorfunction:X||ha,safecopy:N,doframes:O,storagetype:P,orphancontrol:Q, -dohyphenation:l.g,persistentconfig:ia,defaultlanguage:Y,useCSS3hyphenation:J,unhide:R,onbeforewordhyphenation:ja,onafterwordhyphenation:ka}))}function ya(){var a;try{if("none"!==P&&void 0!==f.JSON&&void 0!==f.localStorage&&void 0!==f.sessionStorage&&void 0!==f.JSON.stringify&&void 0!==f.JSON.parse){switch(P){case "session":a=f.sessionStorage;break;case "local":a=f.localStorage;break;default:a=void 0}a.setItem("storageTest","1");a.removeItem("storageTest")}}catch(c){a=void 0}k=a?{prefix:"Hyphenator_"+ -l.version+"_",D:a,n:{},test:function(a){return this.D.getItem(this.prefix+a)?!0:!1},getItem:function(a){a=this.D.getItem(this.prefix+a);return a=a.replace(/-(\d{2,}|[2-9])/g,function(a,b){var c=parseInt(b,10),h="";if(String.prototype.repeat)h="0,".repeat(c-1);else for(;1>1)+1+","});try{this.D.setItem(this.prefix+a,c)}catch(e){D(e)}}}:void 0}function Ja(){t.o(function(a){var c,b=a.length; -for(c=0;c=B&&(e.data=e.data.replace(h.p,d),1!==Q&&(e.data=e.data.replace(/[\S]+ [\S]+[\s]*$/,Ka))),g+=1,e=b.childNodes[g];"hidden"===I&&"wait"===R&&(b.className=b.className.replace(Ca,""),""===b.className&&b.removeAttribute("class"));"hidden"===I&&"progressive"===R&&(b.className=b.className.replace(Ca," "+pa));c.r=!0;t.q+=1;t.count<=t.q&&La()}function Ka(a){var c,b;switch(C){case "|":c="\\|";break;case "+":c="\\+";break;case "*":c= -"\\*";break;default:c=C}a=a.replace(/[\s]*$/,"");2<=Q&&(b=a.split(" "),b[1]=b[1].replace(new RegExp(c,"g"),""),b[1]=b[1].replace(new RegExp(Da,"g"),""),b=b.join(" "));3===Q&&(b=b.replace(/[ ]+/g,String.fromCharCode(160)));return b}function La(){var a=!0,c,b={},d;t.o(function(c){var d,h=c.length;for(d=0;daa[f+m]&&(aa[f+m]=k[p+1+m]);if(M){a.u||(a.u={});q=k.subarray?k.subarray(p+1,p+1+k[p]):k.slice(p+1,p+1+k[p]);p=a.u;m=g;for(var w=[],x=g.split(""),t=void 0,t=0;t<=x.length;t+=1)q[t]&&0!==q[t]&&w.push(q[t]),x[t]&&w.push(x[t]);p[m]=w.join("")}}if(0=a.K&&m<=d-a.M&&0!==aa[m+1]%2?e+(C+b.charAt(m)):e+b.charAt(m)}e=ka(e,c);K&&(a.cache[b]=e);return e}function V(){var a,c;c=l.g?"Hy-phen-a-tion":"Hyphenation";var b=v.document.getElementById("HyphenatorToggleBox"); -b?b.firstChild.data=c:(a=v.document.getElementsByTagName("body")[0],b=ba("div",v),b.setAttribute("id","HyphenatorToggleBox"),b.setAttribute("class",H),c=v.document.createTextNode(c),b.appendChild(c),b.onclick=l.Z,b.style.position="absolute",b.style.top="0px",b.style.right="0px",b.style.margin="0",b.style.backgroundColor="#AAAAAA",b.style.color="#FFFFFF",b.style.font="6pt Arial",b.style.letterSpacing="0.2em",b.style.padding="3px",b.style.cursor="pointer",b.style.WebkitBorderBottomLeftRadius="4px", -b.style.MozBorderRadiusBottomleft="4px",b.style.borderBottomLeftRadius="4px",a.appendChild(b))}function Na(a){function c(){for(var b in E)E.hasOwnProperty(b)&&l.a.hasOwnProperty(b)&&(delete E[b],qa(b),a(b))}var b,d,e;if(fa){for(b in E)if(E.hasOwnProperty(b))if(k&&k.test(b)){l.a[b]=f.JSON.parse(k.getItem(b));Object.prototype.hasOwnProperty.call(f,"Int32Array")&&(l.a[b].b=new f.Int32Array(l.a[b].b),l.a[b].m.keys=new f.Uint8Array(l.a[b].m.keys));if(w.hasOwnProperty("global"))for(e in d=ra(w.global), -d)d.hasOwnProperty(e)&&(l.a[b].c[e]=d[e]);if(w.hasOwnProperty(b)){d=ra(w[b]);for(e in d)d.hasOwnProperty(e)&&(l.a[b].c[e]=d[e]);delete w[b]}d=String().normalize?"[\\w"+l.a[b].h+l.a[b].h.normalize("NFD")+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+B+",}":"[\\w"+l.a[b].h+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+B+",}";l.a[b].p=new RegExp("("+d+")|((?:\\w*://)?(?:(?:\\w*:)?(?:\\w*)@)?(?:(?:(?:[\\d]{1,3}\\.){3}(?:[\\d]{1,3}))|(?:(?:www\\.|[a-zA-Z]\\.)?[a-zA-Z0-9\\-\\.]+\\.(?:[a-z]{2,4})))(?::\\d*)?(?:/[\\w#!:\\.?\\+=&%@!\\-]*)*)|([\\w-\\.]+@[\\w\\.]+)", -"gi");K&&!l.a[b].cache&&(l.a[b].cache={});delete E[b];a(b)}else Oa(b,c);c()}else{for(b in l.a)l.a.hasOwnProperty(b)&&qa(b);a("*")}}function qa(a){var c=l.a[a],b;c.t||(K&&(c.cache={}),M&&(c.u={}),c.hasOwnProperty("exceptions")&&(l.N(a,c.c),delete c.c),w.hasOwnProperty("global")&&(w[a]=w.hasOwnProperty(a)?w[a]+(", "+w.global):w.global),w.hasOwnProperty(a)?(c.c=ra(w[a]),delete w[a]):c.c={},Pa(c),b=String().normalize?"[\\w"+c.h+c.h.normalize("NFD")+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+ -B+",}":"[\\w"+c.h+String.fromCharCode(173)+String.fromCharCode(8204)+"-]{"+B+",}",c.p=new RegExp("("+b+")|((?:\\w*://)?(?:(?:\\w*:)?(?:\\w*)@)?(?:(?:(?:[\\d]{1,3}\\.){3}(?:[\\d]{1,3}))|(?:(?:www\\.|[a-zA-Z]\\.)?[a-zA-Z0-9\\-\\.]+\\.(?:[a-z]{2,4})))(?::\\d*)?(?:/[\\w#!:\\.?\\+=&%@!\\-]*)*)|([\\w-\\.]+@[\\w\\.]+)","gi"),c.t=!0);k&&(k.n.G=function(){k.setItem(a,f.JSON.stringify({j:{k:c.j.k},H:c.H,c:c.c,b:Array.prototype.slice.call(c.b),K:c.K,t:c.t,M:c.M,h:c.h,m:{keys:Array.prototype.slice.call(c.m.keys)}}))})} -function Oa(a,c){var b,d,e,g,h=!1;if(y.hasOwnProperty(a)&&!l.a[a]){b=ca+"patterns/"+y[a].file;if(Qa&&!S){d=null;try{d=new f.XMLHttpRequest}catch(r){try{d=new f.ActiveXObject("Microsoft.XMLHTTP")}catch(ma){try{d=new f.ActiveXObject("Msxml2.XMLHTTP")}catch(u){d=null}}}d&&(d.open("HEAD",b,!0),d.setRequestHeader("Cache-Control","no-cache"),d.onreadystatechange=function(){2===d.readyState&&(400<=d.status?(D(Error("Could not load\n"+b)),delete E[a]):d.abort())},d.send(null))}ba&&(e=f.document.getElementsByTagName("head").item(0), -g=ba("script",f),g.src=b,g.type="text/javascript",g.charset="utf8",g.onload=g.onreadystatechange=function(){h||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(h=!0,c(),g.onload=g.onreadystatechange=null,e&&g.parentNode&&e.removeChild(g))},e.appendChild(g))}}function ra(a){a=a.split(", ");var c={},b,d,e;b=0;for(d=a.length;b=m?(e.add(m-48),k=!0):(k||e.add(0),k=!1,-1===q&&(c=q=c+h,g[p+2*n]=q),n=d[m],p=q,q=g[p+2*n],0===q&&(q=g[p+2*n]=-1)):(49<=m&&57>=m?e.add(m-48): -(k||e.add(0),e.add(0),-1===q&&(c=q=c+h,g[p+2*n]=q),n=d[m],p=q,0===g[p+2*n]&&(g[p+2*n]=-1)),g[p+2*n+1]=e.O(),q=p=0,k=!1)}function Sa(a){this.keys=function(){var c,b;if(Object.prototype.hasOwnProperty.call(f,"Uint8Array"))return new f.Uint8Array(a);b=[];b.length=a;for(c=b.length-1;0<=c;--c)b[c]=0;return b}();this.C=1;this.B=this.l=2;this.add=function(a){0!==a&&(this.keys[this.l]=a,this.B=this.l);this.l+=1};this.O=function(){var a=this.C;this.keys[a]=this.B-a;this.C=this.B+1;this.l=this.C+1;return a}} -function Ra(){this.A=[];this.k={};this.add=function(a){this.k[a]||(this.A.push(a),this.k[a]=this.A.length-1)}}function Ta(){function a(b){var c,e=0;for(c=b.childNodes[e];c;)1!==c.nodeType||sa[c.nodeName.toLowerCase()]||-1!==c.className.indexOf(H)||-1!==c.className.indexOf(L)||d[c]?3===c.nodeType&&(c.data=na(c.data)):a(c),e+=1,c=b.childNodes[e]}function c(a,d,e){function g(){S&&q!==x||(y.hasOwnProperty(q)?E[q]=!0:y.hasOwnProperty(q.split("-")[0])?(q=q.split("-")[0],E[q]=!0):S||(p=!1,D(Error('Language "'+ -q+'" is not yet supported.'))),p&&("hidden"===I&&(a.className=a.className+" "+ta),t.add(a,q)))}function f(){G=new Fa(v);G.e("."+T,z.d+": auto;");G.e("."+H,z.d+": manual;");q!==d&&-1!==z.d.indexOf("webkit")&&G.e("."+T,"-webkit-locale : "+q+";");a.className=a.className+" "+T}e=e||!1;var n=0,p=!0,q;q=a.lang&&"string"===typeof a.lang?a.lang.toLowerCase():d&&""!==d?d.toLowerCase():ua(a,!0);e?q!==d?J&&z.i&&z.f(q)?f():g():J&&z.i&&z.f(q)||g():J&&z.i&&z.f(q)?f():g();for(e=a.childNodes[n];e;)1!==e.nodeType|| -sa[e.nodeName.toLowerCase()]||-1!==e.className.indexOf(H)||-1!==e.className.indexOf(U)||b[e]||c(e,q,!0),n+=1,e=a.childNodes[n]}var b,d,e,g=0;J&&Ua();if(S)b=v.document.getElementsByTagName("body")[0],c(b,x,!1);else{J||"hidden"!==I||(A.push(new Fa(v)),A[A.length-1].e("."+L,"visibility: hidden;"),A[A.length-1].e("."+ta,"visibility: hidden;"),A[A.length-1].e("."+pa,"visibility: visible;"));b=Va();for(e=b[g];e;)c(e,"",!1),g+=1,e=b[g];d=ha(U);g=0;for(e=d[g];e;)a(e),g+=1,e=d[g]}if(0===t.count){for(g=0;g< -A.length;g+=1)A[g].I();W(v.location.href)}}function Ga(a){a=a||v;var c=a.document.getElementsByTagName("html")[0],b=a.document.getElementsByTagName("meta"),d;x=ua(c,!1);if(!x)for(d=0;d2*B&&(a[c]=a[c].replace(/(\w{3})(\w)/gi,"$1"+F+"$2"));""===a[a.length-1]&&a.pop();return a.join(F)}function Fa(a){function c(a,b){var c;d.insertRule?(c=d.cssRules?d.cssRules.length:0,c=d.insertRule(a+"{"+b+"}",c)):d.addRule&&(c=d.rules?d.rules.length:0,d.addRule(a, -b,c));return c}a=a||f;var b=a.document,d=function(){var a,c=b.styleSheets.length,d,e=!1;for(a=0;a=B?d.data=d.data.replace(f.p,b):1===d.nodeType&&(""!==d.lang?l.J(d,d.lang):l.J(d,c)),e+=1,d=a.childNodes[e];else{if("string"=== -typeof a||a.constructor===String)return a.replace(f.p,b)}else D(Error('Language "'+c+'" is not loaded.'))},da:function(a){return l.a[a].u},S:function(){return S},P:function(){var a=null,c={},b=v.document.getElementsByTagName("script"),d,e;d=0;for(e=b.length;d + @@ -13,6 +13,7 @@ MathJax.Hub.config.tex2jax.skipTags = ["script", "noscript", "style", "textarea", "annotation", "annotation-xml"]; + - +
    + <%= @items["/footer/"].compiled_content(snapshot: :last) %> +
    From 112eef2a3fbef416d160e5ebbcad15285d1636f0 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 14:43:04 -0400 Subject: [PATCH 20/48] Fix footer position --- content/stylesheets/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/stylesheets/main.css b/content/stylesheets/main.css index ec73ce4..9ae46fa 100644 --- a/content/stylesheets/main.css +++ b/content/stylesheets/main.css @@ -2,6 +2,7 @@ body { background: #F5F7F6; color: #000000; margin: 0; padding: 0; + max-width: 720px; text-rendering: optimizelegibility; @@ -59,7 +60,6 @@ body { article { margin: 15px; - max-width: 720px; transition: max-width 1s; } From 3b3ab438569140957fda89fd1677303ae4aaa808 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 14:43:35 -0400 Subject: [PATCH 21/48] Change footer --- content/footer.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/footer.md b/content/footer.md index c468e89..32f6936 100644 --- a/content/footer.md +++ b/content/footer.md @@ -1,2 +1 @@ -
  • Github
  • Contribute
  • +
  • Contribute
  • From c6417fb0d31d84f790ff27129b9163736db8885f Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 15:04:18 -0400 Subject: [PATCH 22/48] Nimrod -> Nim --- content/getting_started.md | 6 +++--- content/js/main.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/getting_started.md b/content/getting_started.md index 7eb8336..784a539 100644 --- a/content/getting_started.md +++ b/content/getting_started.md @@ -17,9 +17,9 @@ Once you have downloaded the appropriate distribution and extracted the files so To install Nim from git, ensure that you have gcc installed on Windows, Linux, and BSDs and clang on Mac. Afterwards, run the following series of commands to download and bootstrap Nim: ```console -$ git clone -b master git://github.com/Araq/Nimrod.git -$ cd Nimrod -$ git clone --depth 1 git://github.com/nimrod-code/csources +$ git clone -b master git://github.com/Araq/Nim.git +$ cd Nim +$ git clone --depth 1 git://github.com/nim-code/csources $ cd csources $ sh build.sh # Replace with build.bat on windows $ cd .. diff --git a/content/js/main.js b/content/js/main.js index 095e52d..d1e84ae 100644 --- a/content/js/main.js +++ b/content/js/main.js @@ -7,7 +7,7 @@ function setVisibleTags(){ } } -var isMobile = window.matchMedia("only screen and (max-width: 720px)").matches; +var isMobile = window.screen.width < 720; if (localStorage.getItem("openside") === null) { window.sidebarExpanded = !isMobile; } else { From 989058e4d7866ee5fb29c1297aac950c864fc182 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 16:00:15 -0400 Subject: [PATCH 23/48] Add subtype test --- content/oop.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/content/oop.md b/content/oop.md index 2e3870c..9edbdd7 100644 --- a/content/oop.md +++ b/content/oop.md @@ -38,3 +38,19 @@ woof meow 10 ``` + +## Testing subtypes + +It is also possible to check if an object is of a given subtype with the `of` keyword. For example, + +``` nimrod +echo(animals[0] of Dog) +echo(animals[0] of Cat) +echo(animals[0] of Animal) +``` +``` console +$ nim c -r of_op.nim +true +false +true +``` From edfe80ca13b8e9172bd437330c0837588ee32965 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 16:01:35 -0400 Subject: [PATCH 24/48] Nimrod -> Nim pt. 2 --- content/block.md | 2 +- content/oop_macro.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/block.md b/content/block.md index 2ea8acc..b445981 100644 --- a/content/block.md +++ b/content/block.md @@ -10,7 +10,7 @@ The first way is to use indenting, e.g. using `if-elif-else`, `while`, `for` sta ``` nimrod if true: - echo "Nimrod is great!" + echo "Nim is great!" while false: echo "This line is never output!" diff --git a/content/oop_macro.md b/content/oop_macro.md index f011e0c..0019d29 100644 --- a/content/oop_macro.md +++ b/content/oop_macro.md @@ -47,7 +47,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} = # The macro is immediate so that it doesn't # resolve identifiers passed to it - var typeName, baseName: PNimrodNode + var typeName, baseName: NimNode if head.kind == nnkIdent: # `head` is expression `typeName` From 7fa4dd3ed59e4b50e99eec6e4b107979418df3b2 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Tue, 26 May 2015 16:02:25 -0400 Subject: [PATCH 25/48] Update valid validcodehashes --- validcodehashes.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/validcodehashes.txt b/validcodehashes.txt index 84aae9a..196478e 100644 --- a/validcodehashes.txt +++ b/validcodehashes.txt @@ -35,4 +35,9 @@ e4b29a303e0a22cab1f2bfb769ce66c5 24614b0b8792a9afc184e4d63e345981 217de4ce8743609c7592a3d75264b17d 36c0a24d4e54348f950ff421a33dcd38 -0b0bdbed7863d3ec82d2d8cb628562ed \ No newline at end of file +0b0bdbed7863d3ec82d2d8cb628562ed +a043c1e16c84d2f1be0a9a6193d30ac0 +4d390aa1b44e1bb953e12e210985c85a +d20fe9a9133bee2ef13c3b19ef540958 +08b581ad308e3614335426ad8188b1ef +d10f498d7a0d1e8693f7e1612822405f \ No newline at end of file From 0c7010e38195b5d7104bee91d77367a59c004185 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Wed, 27 May 2015 18:46:34 -0400 Subject: [PATCH 26/48] Make site more usable on desktop --- content/stylesheets/main.css | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/content/stylesheets/main.css b/content/stylesheets/main.css index 9ae46fa..3559871 100644 --- a/content/stylesheets/main.css +++ b/content/stylesheets/main.css @@ -107,3 +107,14 @@ footer a:hover { color: #999; } -ms-transition: none !important; transition: none !important; } + + +@media screen and (min-width: 925px) { + body { margin: 0 auto; } + body #sidebar.collapsed, body #sidebar { margin-left: -205px; } + body article.expanded, body article { max-width: none; width: none; min-width: none; } +} + +@media screen and (max-width: 1200px) { + body { margin-right: 0; } +} From 32ff8d601fcd3838546805bb7da5fca3215e284b Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Sun, 31 May 2015 16:09:37 -0400 Subject: [PATCH 27/48] Add next-prev buttons Fixes #22 --- content/js/main.js | 41 ++++++++++++++++++++++++++++++------ content/stylesheets/main.css | 13 ++++++++++++ layouts/default.html | 5 +++++ 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/content/js/main.js b/content/js/main.js index d1e84ae..9aed0d3 100644 --- a/content/js/main.js +++ b/content/js/main.js @@ -7,13 +7,6 @@ function setVisibleTags(){ } } -var isMobile = window.screen.width < 720; -if (localStorage.getItem("openside") === null) { - window.sidebarExpanded = !isMobile; -} else { - window.sidebarExpanded = (localStorage.getItem("openside") === "true"); -} - function updateSidebar(notransition) { if (notransition) { document.querySelectorAll("#sidebar")[0].classList.add("notransition"); @@ -40,8 +33,42 @@ function sidebarClick() { updateSidebar(false); } +function getNextPrev() { + // thanks iznogoodd from #nim @ freenode.net + var links = document.querySelectorAll('#sidebar a[href]'); + + var nav = {prev: null, next: null}; + for(var i = 0; i < links.length; i++){ + var item = links.item(i); + if(item && item.getAttribute('href') === window.location.pathname){ + nav.prev = links.item(i - 1) && links.item(i - 1).getAttribute('href'); + nav.next = links.item(i + 1) && links.item(i + 1).getAttribute('href'); + return nav; + } + } +} + +function updateNextPrevButtons() { + var nav = getNextPrev(); + + var prev = document.getElementById("arrow-prev"); + var next = document.getElementById("arrow-next"); + + if (nav.prev != null) { prev.classList.remove("disabled"); prev.href = nav.prev; } + if (nav.next != null) { next.classList.remove("disabled"); next.href = nav.next; } +} + + +var isMobile = window.screen.width < 720; +if (localStorage.getItem("openside") === null) { + window.sidebarExpanded = !isMobile; +} else { + window.sidebarExpanded = (localStorage.getItem("openside") === "true"); +} + localStorage.setItem(window.location.pathname, true); window.onload = function(){ updateSidebar(true); setVisibleTags(); + updateNextPrevButtons(); } diff --git a/content/stylesheets/main.css b/content/stylesheets/main.css index 3559871..8d14e3e 100644 --- a/content/stylesheets/main.css +++ b/content/stylesheets/main.css @@ -58,6 +58,16 @@ body { .nav-toggle span { margin-top: 9.5px; } +#nextprev { + overflow: hidden; + padding: .5em 1em; +} + +.text-icon { font-size: 5em; } +#arrow-prev { float: left; } +#arrow-next { float: right; } + + article { margin: 15px; @@ -70,6 +80,9 @@ a { text-decoration: none; } a:link, a:visited { color: #B45D47; } a:hover { color: #FE3B3B; } +a.disabled, a:link.disabled, a:visited.disabled { color: #999; pointer-events: none; } +a:hover.disabled { color: #888; } + pre, code { font-family: Monaco, Menlo, Consolas, "Courier New", monospace; } code { diff --git a/layouts/default.html b/layouts/default.html index 38e674c..6b5ed74 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -41,6 +41,11 @@ <%= yield %> +
    + ↽ + ⇁ +
    +
    <%= @items["/footer/"].compiled_content(snapshot: :last) %>
    From 81856ba7d995bb220cfd14dfcb87968ec6774a5f Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Sun, 31 May 2015 16:35:40 -0400 Subject: [PATCH 28/48] Use cloudflare for MathJax Makes load times faster by not requiring a connection be established with another server --- layouts/default.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/default.html b/layouts/default.html index 6b5ed74..41b10d5 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -12,7 +12,7 @@ MathJax.Hub.Config({tex2jax: {inlineMath: [['«', '»']]}}); MathJax.Hub.config.tex2jax.skipTags = ["script", "noscript", "style", "textarea", "annotation", "annotation-xml"]; - + - - + <% if @config[:debug] %> + <% for file in @config[:stylesheets] %> + .css"> + <% end %> + <% for file in @config[:scripts] %> + + <% end %> + <% else %> + + + <% end %> + Nim by Example - <%= @item[:title] %> + @@ -33,7 +33,7 @@ @@ -47,7 +47,7 @@
    - <%= @items["/footer/"].compiled_content(snapshot: :last) %> + <%= @items["/content/footer/"].compiled_content(snapshot: :last) %>
    diff --git a/lib/helpers.rb b/lib/helpers.rb new file mode 100644 index 0000000..28bda4a --- /dev/null +++ b/lib/helpers.rb @@ -0,0 +1,19 @@ +def all_js(files) + js_arr = [] + for file in files + item = @items.find{|i| i.identifier == "/assets/js/#{file}/"} + puts "File #{file} doesn't exist!" unless item + js_arr << item.compiled_content + end + js_arr.join("\n") +end + +def all_css(files) + css_arr = [] + for file in files + item = @items.find{|i| i.identifier == "/assets/css/#{file}/"} + puts "File #{file} doesn't exist!" unless item + css_arr << item.compiled_content + end + css_arr.join("\n") +end diff --git a/nanoc.yaml b/nanoc.yaml index bf8c595..349101f 100644 --- a/nanoc.yaml +++ b/nanoc.yaml @@ -60,3 +60,14 @@ data_sources: # The default encoding for all files in `content/` and `layouts/`. encoding: utf-8 + + +debug: false + +scripts: + - main + +stylesheets: + - normalize + - colorful + - main diff --git a/wercker.yml b/wercker.yml index f780e54..bad2a2f 100644 --- a/wercker.yml +++ b/wercker.yml @@ -1,4 +1,4 @@ -box: flaviut/nim-by-example-build-vm@0.0.6 +box: flaviut/nim-by-example-build-vm@0.0.7 build: steps: - script: From a440c07e35c158d6a48b451bb7069a722c4dbf56 Mon Sep 17 00:00:00 2001 From: Flaviu Tamas Date: Sun, 31 May 2015 18:20:55 -0400 Subject: [PATCH 30/48] Inline CSS this gets google to stfu about performance issues --- layouts/default.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/layouts/default.html b/layouts/default.html index 0c71eee..030c2b6 100644 --- a/layouts/default.html +++ b/layouts/default.html @@ -11,7 +11,9 @@ <% end %> <% else %> - + <% end %>