Hana 9e216da9ef go.mod: add go.mod and move pygments to third_party
After go1.16, go will use module mode by default,
even when the repository is checked out under GOPATH
or in a one-off directory. Add go.mod, go.sum to keep
this repo buildable without opting out of the module
mode.

> go mod init github.com/mmcgrana/gobyexample
> go mod tidy
> go mod vendor

In module mode, the 'vendor' directory is special
and its contents will be actively maintained by the
go command. pygments aren't the dependency the go will
know about, so it will delete the contents from vendor
directory. Move it to `third_party` directory now.

And, vendor the blackfriday package.

Note: the tutorial contents are not affected by the
change in go1.16 because all the examples in this
tutorial ask users to run the go command with the
explicit list of files to be compiled (e.g.
`go run hello-world.go` or `go build command-line-arguments.go`).
When the source list is provided, the go command does
not have to compute the build list and whether it's
running in GOPATH mode or module mode becomes irrelevant.
2021-02-15 16:45:26 -05:00

156 lines
3.2 KiB
Plaintext

;; filepath tests
require:
library
./awesome
./variable/greatness/file
;; Strings
"Hello World!"
"Hello!\nWorld!"
'sasadads\ssdasdasd{ @method variable }'
var dstring = .dotted-string
key-dash
but-can-it-do-ops +
yes-it-can:
100 +
print "So cool!"
100
{that = "is awesome", you = "are hilarious"} +
jiminy-crickets:
oliver-twist each mr-bojangles +
kittens =
12
check-it:
still-works:
{1, 2, 3}.reversed.reversed.awesome{}.that.sort().what.map with
x -> x * x
(1, 2, 3) + this
if total awesomeness > great stupidity:
print "You've won!"
not-sure-what-this-does @@ but-it-wont-capture
else:
print "Keep trying!"
needs-work ++ you
;; with tests
needs-obj('awesome') with {"greatness values"}
object.field.method with {1, 2, 3}
;; object assignment
obj = {
key = "oh yeah"
tree = "schmoh cheah"
}
obj.field = {
that = super cool: "wowzers!"
thatFunc = {x} -> x
}
;; match statements
match @awesome.great:
{head, *tail} -> [print head; tail]
Array[] -> convert(.arr)
String? -> convert(.str)
else -> throw E.error("This is an error!")
unimpl-func = -> pass
;; if / elif / else test
if coolness > 11:
add something: something-else
elif true:
add nothing: something-else
else:
add everything: the-castle
;; nested if / elif / else test
mad-function = bananas ->
if bananas > 5:
print "You've got a lot of bananas!"
elif bananas == 5:
print "You might want to consider getting more bananas"
else:
print "Go get more bananas now!"
;; class test
class Dog:
constructor(@name, @breed) =
this.awesomesauce = 100
unimpl-meth = -> pass
bark(@, sd)
;; error test
try:
throw E.test.my-error("This is my error.")
catch TypeError? e:
print "There was a type error."
catch E.my-error? e:
print "My error!"
catch e:
print "Some other error."
finally:
print "We are done."
;; method shorthand operator
stream-of-twos = *->
while [true]: yield 2 ;; need to fix literals with colons after them.
;; gen shorthand operator
full-name = @->
'{@first-name} {@last-name}'
name-method = @->
@name.parents.full-name()
;; Keyword highlight test
key x
key +x; key @x; key .x ; key "x"; key 0; .asdasd
key (x); key [x]; key {x}
nokey.x(); nokey{x}
key x + y
key key x
x + key y
x - key y
nokey + x
nokey
key: x
key nokey: y
key x > nokey: z
x + key nokey: z
x and {y, z}
x + nokey: y
x mod nokey: y
x = key: y ;; comments work after keywords!
x each key: y
x each* k ;;
a.b{c.d, e.f}
a.bad-method(c.d, e.f)
#a{}
nokey mod: y ;; do not highlight nokey
;; because mod is an operator
;; Highlight all of these:
await; break; chain; continue; else:; expr-value
match; return; yield
;; Edge-case highlighting test
key-word: xyz
nokey - x: yz
;; Some keywords may contain operators as a subpart. If your regexp
;; uses \b to single out operators like each, is or in, you may
;; fail to highlight these properly:
beaches ;; Do not highlight each inside the word beaches
each-thing ;; Do not highlight each
sleep-in ;; Do not highlight in
before-each: xyz ;; Highlight before-each as a keyword
is-great: xyz ;; Highlight is-great as a keyword
send()