Jean Privat [Tue, 4 Nov 2014 20:07:40 +0000 (15:07 -0500)]
Merge: Manual: rewrite the man for nitg
If people like it, I may write the manpage for the other tools.
I generated the markdown to http://nitlanguage.org/tools/nitg/ so you could see the rendered result in HTML.
I plan to have pages for the tools automatically synchonized from the files in /share/man.
Pull-Request: #871
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Tue, 4 Nov 2014 20:07:17 +0000 (15:07 -0500)]
Merge: neo: Load the graph in chunks and only once.
With this fix, `neo.nit` now takes approximately 2 Gio of memory to load the graph for Apache Xerces.
Fixes #870.
Pull-Request: #872
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Mon, 3 Nov 2014 16:21:00 +0000 (11:21 -0500)]
man: rewrite nitg.md
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Christophe Beaupré [Mon, 3 Nov 2014 20:43:06 +0000 (15:43 -0500)]
neo: Really load the graph only once.
This cut memory consumption in half (approximately).
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean-Christophe Beaupré [Mon, 3 Nov 2014 20:38:01 +0000 (15:38 -0500)]
neo: Load the graph in chunks.
Fix #870.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean Privat [Mon, 3 Nov 2014 19:45:05 +0000 (14:45 -0500)]
Merge: Bugfixes for MacOSX
Some hot-bugfixes for MacOSX.
See the individual commits for the details.
Pull-Request: #865
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Mon, 3 Nov 2014 18:38:03 +0000 (13:38 -0500)]
man: add nitc as an alias of nitg
So people that does `man nitc` will see something.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 3 Nov 2014 07:51:11 +0000 (02:51 -0500)]
README: add pkg-config as a requirement
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 2 Nov 2014 16:04:28 +0000 (11:04 -0500)]
tests: fix saferun() return value when TIME is not set
Doing stuff after the command execution will temper its return value.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 2 Nov 2014 16:02:56 +0000 (11:02 -0500)]
toolcontext: nit_dir tries another heuristic on PATH if procfs is not available
procfs (/proc/) does not exists on some system (macosx).
Therefore the heuristic used to find nit_dir will fail on those system
when the command is invoked from the PATH.
The solution is to add another heuristic, where the program_name is
manually searched inside the directories of PATH in order to find the
original directory.
Reported-by: Alexandre Blondin Massé <alexandre.blondin.masse@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sun, 2 Nov 2014 16:01:39 +0000 (11:01 -0500)]
bin: nitc does no more rely on procfs
procfs (/proc/) does not exists on some system (macosx).
So use `$BASH_SOURCE` to approximate the original source-file.
Maybe we should just rename back nitg to nitc.
Reported-by: Alexandre Blondin Massé <alexandre.blondin.masse@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 1 Nov 2014 18:06:17 +0000 (14:06 -0400)]
tools: use pkg-config to found libgc
In some platform (macosx+macports), the libgc library is not located at
standard default position.
Fortunately, libgc seems to be registered with pkg-config under most
platforms.
Thus, use pkg-config in the generated makefiles to found the correct
flags and paths.
In c_src, some generated files are manually modified to provide a
working bootstrap under those platforms.
This is only a quick-and-dirty workaround. The real job must be polished
and generalized to solve the issue #864.
Reported-by: Alexandre Blondin Massé <alexandre.blondin.masse@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 3 Nov 2014 14:52:03 +0000 (09:52 -0500)]
doc: remove advanced_options (deprecated by manpages)
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 3 Nov 2014 14:51:22 +0000 (09:51 -0500)]
man: improve README when people already have a MANPATH
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 3 Nov 2014 14:49:54 +0000 (09:49 -0500)]
makefile: add `man` rule to build the manpages
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Sat, 1 Nov 2014 14:32:14 +0000 (10:32 -0400)]
Merge: lib/android: hack to fix new_global_ref
awaiting a fix for #845
@privat This might fix some android apps, ballz at least.
Pull-Request: #846
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Fri, 31 Oct 2014 12:56:20 +0000 (08:56 -0400)]
version 0.6.10
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 31 Oct 2014 16:55:06 +0000 (12:55 -0400)]
update c_src
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Fri, 10 Oct 2014 17:44:07 +0000 (13:44 -0400)]
lib/android: hacks to fix new_global_ref awaiting a fix for #845
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Fri, 31 Oct 2014 11:17:55 +0000 (07:17 -0400)]
Merge: Distribuable compiledir
Unfortunately, Nit is not yet available everywhere.
Therefore, in order to be able to distribute or deploy Nit programs, one easy way is to distribute the generated C code.
This is what we already do with `c_src` that contains modified C code from the compilation of nith.
This PR generalize the approach and allow the compiler to produce some neat and distributable .compile_dir.
Look at the new `mkcsrc` to see how things are simpler now.
Example, you want to disribute `hello_world`:
~~~sh
$ nitg examples/hello_world.nit --semi-global --no-cc --dir hello --compile-dir hello
$ ls -l hello
abstract_collection.sep.0.h
abstract_collection.sep.1.c
array.sep.0.h
array.sep.1.c
c_functions_hash.c
c_functions_hash.h
file_nit.c
file_nit.h
file.sep.0.h
file.sep.1.c
gc_chooser.c
gc_chooser.h
hello_world.classes.0.h
hello_world.classes.1.c
hello_world.main.0.h
hello_world.main.1.c
hello_world.mk
hello_world.sep.0.h
hello_world.sep.1.c
hello_world.types.0.h
hello_world.types.1.c
kernel.sep.0.h
kernel.sep.1.c
Makefile
math_nit.h
math.sep.0.h
math.sep.1.c
nit.common.h
stream.sep.0.h
stream.sep.1.c
string_nit.c
string_nit.h
string.sep.0.h
string.sep.1.c
$ cd hello
$ make
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o hello_world.classes.1.o hello_world.classes.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o hello_world.main.1.o hello_world.main.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o hello_world.sep.1.o hello_world.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o string.sep.1.o string.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o math.sep.1.o math.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o kernel.sep.1.o kernel.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o abstract_collection.sep.1.o abstract_collection.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o array.sep.1.o array.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o file.sep.1.o file.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o stream.sep.1.o stream.sep.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o hello_world.types.1.o hello_world.types.1.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o string_nit.extern.o string_nit.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o file_nit.extern.o file_nit.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -c -o c_functions_hash.extern.o c_functions_hash.c
ccache cc -g -O2 -Wno-unused-value -Wno-switch -DWITH_LIBGC -c -o gc_chooser.extern.o gc_chooser.c
ccache cc -o hello_world hello_world.classes.1.o hello_world.main.1.o hello_world.sep.1.o string.sep.1.o math.sep.1.o kernel.sep.1.o abstract_collection.sep.1.o array.sep.1.o file.sep.1.o stream.sep.1.o hello_world.types.1.o string_nit.extern.o file_nit.extern.o c_functions_hash.extern.o gc_chooser.extern.o -lm -lgc -lunwind
$ ./hello_world
hello world
~~~
Pull-Request: #860
Jean Privat [Fri, 31 Oct 2014 11:17:49 +0000 (07:17 -0400)]
Merge: Attribute block
As promised in #832, here the attribute initialized with a block instead of a simple expression.
The syntax is quite strange but nobody complained in #832.
The final value is returned with a `return` and the `do` block follows optional annotation to look like the definition of methods.
`lazy` and all other annotations on attributes should works as expected.
~~~
class A
var foo: String do return "Hello"
var bar: String is lazy do
return foo + ", world!"
end
end
var a = new A
print a.bar # => hello, world!
~~~
Pull-Request: #858
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Fri, 31 Oct 2014 11:17:46 +0000 (07:17 -0400)]
Merge: Autoinit attributes
Allow `autoinit` on attributes.
This means that the initialization of the attribute is done during the initializer phase.
This will help when the initial value of an attribute depend on the value of another attribute set a the initializer phase.
So that
~~~
class A
var x: String
var y: String = x + " world!"
end
var a = new A("hello") # BOOM! uninitialized x while initializing y
print a.y
~~~
Can become:
~~~
class A
var x: String
var y: String = x + " world!" is autoinit
end
var a = new A("hello")
print a.y # => hello world!
~~~
The inconvenient is that the initialisation markers of attributes become more complex.
Now we have:
* no default value and no special annotation: the setter is collected as an initializer
* no default value and `noinit`: not automatically initialized
* default value and no special annotation: the value is set between the allocation and all initializers
* default value and annotation `lazy`: the value is set at the first access
* *new* default value and annotation `autoinit`: the value is set with all other initializers (other `autoinit`)
For an implementation explanation, the mechanism is a quick hack: `autoinit` means `lazy` + the getter is collector as an initializer. Therefore, when initializers are invoked, the getter will be invoked and the value lazily evaluated.
So the example is equivalent to
~~~
class A
var x: String
var y: String = x + " world!" is lazy
end
var a = ALLOCATE(A)
a.x = "hello" # collected setter for x
a.y # lazy getter for y
a.init
print a.y # => hello world!
~~~
Pull-Request: #857
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Thu, 30 Oct 2014 01:58:12 +0000 (21:58 -0400)]
.gitattributes: nodiff all c_src
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Oct 2014 01:51:57 +0000 (21:51 -0400)]
mkcsrc: rewrite a simplified version
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 17:25:09 +0000 (13:25 -0400)]
tests: add base_init_autoinit2.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 17:02:37 +0000 (13:02 -0400)]
modelize: handle `autoinit` on attributes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 16:58:26 +0000 (12:58 -0400)]
semantize: move noinit attribute to `AAttrPropdef::build_property`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 18:45:08 +0000 (14:45 -0400)]
tests: add base_attr_init_val_block.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 16:43:01 +0000 (12:43 -0400)]
modelize: introduce `AAttrPropdef::has_value`
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 18:24:39 +0000 (14:24 -0400)]
tools: accept statement block in attributes
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 18:16:49 +0000 (14:16 -0400)]
compiler: introduce `AAttrPropdef::evaluate_expr` to factorize the compilation of default values
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 31 Oct 2014 01:58:38 +0000 (21:58 -0400)]
Merge: neo4j: Print an error message when the server is down.
Show the message as expected.
Pull-Request: #861
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Fri, 31 Oct 2014 01:58:30 +0000 (21:58 -0400)]
Merge: Tweaks to Opportunity
Prettier forms and other modifications for your consideration.
I will deploy it on a server later today or tomorrow.
Pull-Request: #859
Reviewed-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Fri, 10 Oct 2014 17:44:07 +0000 (13:44 -0400)]
lib/android: hacks to fix new_global_ref awaiting a fix for #845
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 23:10:14 +0000 (19:10 -0400)]
xymus.net: opportunity use site's header
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 21:59:13 +0000 (17:59 -0400)]
xymus.net: update xymus.net nitcorn config to include an opportunity client
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 30 Oct 2014 14:58:58 +0000 (10:58 -0400)]
opportunity: always show at least 5 answer fields
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 30 Oct 2014 12:05:16 +0000 (08:05 -0400)]
opportunity: nicer meetup creation confirmation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Thu, 30 Oct 2014 11:54:22 +0000 (07:54 -0400)]
opportunity: improve look of welcome message
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 23:30:57 +0000 (19:30 -0400)]
opportunity: restrict modification of old entries
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 23:07:31 +0000 (19:07 -0400)]
opportunity: use a container in "meetup" and "meetup_confirmation"
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 21:53:59 +0000 (17:53 -0400)]
opportunity: meetups hash also rely on timestamp
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 21:52:11 +0000 (17:52 -0400)]
opportunity: support not being at web server root
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 20:12:01 +0000 (16:12 -0400)]
opportunity: by default the server uses port 8080
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 20:11:32 +0000 (16:11 -0400)]
opportunity: prettier meetup participation form
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Wed, 29 Oct 2014 20:11:04 +0000 (16:11 -0400)]
opportunity: prettier meetup creation
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean-Christophe Beaupré [Wed, 29 Oct 2014 18:54:03 +0000 (14:54 -0400)]
neo4j: Print an error message when the server is down.
Show the message as expected.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean Privat [Thu, 30 Oct 2014 01:32:37 +0000 (21:32 -0400)]
compile: also generates a makefile named Makefile
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Oct 2014 01:22:57 +0000 (21:22 -0400)]
compile: add option --group-c-files
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Oct 2014 01:11:03 +0000 (21:11 -0400)]
compile: remove clib from the -I dir because the usufull files are already copied
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Oct 2014 00:55:15 +0000 (20:55 -0400)]
compile: use shortest path from the compiledir to the outname
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Oct 2014 00:47:21 +0000 (20:47 -0400)]
compiler: add option --max-c-lines
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 30 Oct 2014 00:36:49 +0000 (20:36 -0400)]
compiler: do not create empty .h file
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Wed, 29 Oct 2014 20:10:43 +0000 (16:10 -0400)]
opportunity: accept meetup without date or location
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Wed, 29 Oct 2014 19:11:53 +0000 (15:11 -0400)]
Merge: Threads
Intro the `threads` module with support for POSIX threads, mutex and barriers. Also provides 2 ways to have thread-safe collections: refining existing collections and sub-classing them.
TODO:
* Complete the collection support.
* Modifiy `print` so that printing the user content and the new line is (generally) atomic
* Add more examples/use in real programs
* Reinforce error support.
* Fix compatibility with FFI's global refs.
* Add, when needed, GC_THREADS to `gc_chooser.[c|h]`
* Do not include `gc.h` when not using libgc
ping @egagnon
Pull-Request: #849
Reviewed-by: Jean-Philippe Caissy <jpcaissy@piji.ca>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Etienne M. Gagnon <egagnon@j-meg.com>
Jean Privat [Wed, 29 Oct 2014 19:11:45 +0000 (15:11 -0400)]
Merge: neo4j: Implement missing methods in `JsonArray`.
Pull-Request: #856
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 19:11:41 +0000 (15:11 -0400)]
Merge: Workaround nitlight
nitlight was broken when `is cached` was used because highlight does not like AST transtormations.
This workaround justs disable the `cache` phase until something better is found.
http://nitlanguage.org/code2/nitserial.html#nitserial#MModule#serializable_type
Pull-Request: #855
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Jean Privat [Wed, 29 Oct 2014 19:11:38 +0000 (15:11 -0400)]
Merge: lib: fix semantic on has_substring on extreme cases
And avoid illegal access outside the string.
Detected thanks to the interpreted that warns on out-of-bound accesses in nativestrings.
Pull-Request: #854
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Alexis Laferrière [Mon, 27 Oct 2014 14:40:51 +0000 (10:40 -0400)]
lib/threads: intro an example `concurrent_array_and_barrier`
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 26 Oct 2014 16:23:11 +0000 (12:23 -0400)]
lib/threads: intro new thread-safe concurrent collections
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean-Christophe Beaupré [Wed, 29 Oct 2014 16:10:42 +0000 (12:10 -0400)]
neo4j: Implement missing methods in `JsonArray`.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Alexis Laferrière [Sun, 26 Oct 2014 16:21:22 +0000 (12:21 -0400)]
lib/threads: optional redefs of collections to be thread-safe
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Alexis Laferrière [Sun, 26 Oct 2014 16:19:31 +0000 (12:19 -0400)]
lib/threads: intro of the threads lib, with Thread, Mutex and Barrier
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Wed, 29 Oct 2014 13:27:33 +0000 (09:27 -0400)]
highlight: fix css for line and foldable
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 13:05:01 +0000 (09:05 -0400)]
nitlight: disable `cached` since transformed AST cause issues in highlight
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 12:52:06 +0000 (08:52 -0400)]
auto_super_init: make code robust if `typing` is disabled
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 12:50:54 +0000 (08:50 -0400)]
phase: make `disabled=` public
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 01:32:53 +0000 (21:32 -0400)]
lib: fix semantic on has_substring on extreme cases
And avoid illegal access outside the string.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Wed, 29 Oct 2014 00:11:46 +0000 (20:11 -0400)]
Merge: Opportunity
Addresses a few issues mentionned in #811 :
- Return to the meetup creation page when the creation fails (auto-complete fields with old info)
- Use real buttons for the addition/deletion of an attendee to a Meetup
- Forbid creation of a Meetup without at least one answer
I also added feedback when an error is produced when creating the Meetup via a system similar to what @xymus does for Benitlux.
There were a few bugs hidden in the code, the update of the compiler with checks on useless null tests has revealed two of them.
Pull-Request: #850
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Jean Privat [Wed, 29 Oct 2014 00:11:43 +0000 (20:11 -0400)]
Merge: example: rosetta code
Starting playing #842
It is zen...
Pull-Request: #844
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Wed, 29 Oct 2014 00:11:40 +0000 (20:11 -0400)]
Merge: xml: Introduce SAXophoNit, a SAX processor in Nit.
This is a work in progress for a SAX processor in Nit.
Here is a sumary of what is (and what is not) supported at this point:
- [X] Content
- [X] XML declaration (parse it)
- [X] Acceptation of any XML document that Doxygen generates
- [ ] `DOCTYPE` declaration (or ignore it)
- [ ] XML declaration (do something with the settings)
- [x] Namespaces in XML
- [x] SAX mandatory feature flags
- [ ] XML 1.1
- [ ] Ignorable white space
- [ ] User-defined entities
- [ ] Encodings
- [ ] URIs
- [x] Test suite
Pull-Request: #802
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Tue, 28 Oct 2014 18:38:57 +0000 (14:38 -0400)]
opportunity: Fixed a few typos.
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Tue, 28 Oct 2014 00:30:34 +0000 (20:30 -0400)]
Merge: grammar: allow '`' inside foreign code blocks
This was an old bug causing the use of ``` ` ``` within a foreign code block to break the block. Example:
~~~~
fun foo `{
// Some comment on entity `foo` would prevent the whole block to be recognize
`}
~~~~
Pull-Request: #847
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Oct 2014 19:44:05 +0000 (15:44 -0400)]
example: add some tasks of Rosetta code
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Oct 2014 23:53:58 +0000 (19:53 -0400)]
tests: update test_new_native_alt1 becaus eline change in array.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Mon, 27 Oct 2014 19:38:30 +0000 (15:38 -0400)]
lib: add Array::+
Signed-off-by: Jean Privat <jean@pryen.org>
Alexis Laferrière [Sun, 26 Oct 2014 13:12:59 +0000 (09:12 -0400)]
lib/collection: minor fix to doc in list.nit
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Lucas Bajolet [Mon, 27 Oct 2014 18:50:25 +0000 (14:50 -0400)]
opportunity: Bugfix for answers at creation of a new attendee for a Meetup
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 27 Oct 2014 18:05:17 +0000 (14:05 -0400)]
opportunity: Cosmetic changes to meetup visualization page
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 27 Oct 2014 17:21:30 +0000 (13:21 -0400)]
opportunity: Fixed useless null check
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 27 Oct 2014 17:21:15 +0000 (13:21 -0400)]
opportunity: Creation of a Meetup can now return to its page on error
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean-Christophe Beaupré [Mon, 27 Oct 2014 16:17:49 +0000 (12:17 -0400)]
xml: Add an usage example.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean-Christophe Beaupré [Mon, 27 Oct 2014 15:45:06 +0000 (11:45 -0400)]
xml: Add some tests for SAXpohoNit.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean-Christophe Beaupré [Thu, 9 Oct 2014 14:53:46 +0000 (10:53 -0400)]
xml: Introduce SAXophoNit, a SAX processor in Nit.
For the moment, this implementation is mostly non-compliant, but it
works with most common XML documents.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean-Christophe Beaupré [Thu, 25 Sep 2014 19:25:03 +0000 (15:25 -0400)]
xml: Add classes to help testing a SAX parser.
Will be used to test SAXophoNit (A SAX parser in Nit).
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean-Christophe Beaupré [Fri, 19 Sep 2014 13:44:15 +0000 (09:44 -0400)]
xml: Port SAX 2.0.
This is a port of SAX 2.0.1 (http://www.saxproject.org) in Nit. The
following is **not** included in this port:
* Support for SAX1.
* Exceptions.
* Factories (requires run-time loading).
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Alexis Laferrière [Sat, 25 Oct 2014 13:07:52 +0000 (09:07 -0400)]
grammar: allow '`' inside foreign code blocks
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Lucas Bajolet [Mon, 27 Oct 2014 15:29:51 +0000 (11:29 -0400)]
opportunity: Changed layout from contrainer-fluid to container
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Lucas Bajolet [Mon, 27 Oct 2014 15:29:31 +0000 (11:29 -0400)]
opportunity: Corrected typo in welcome message
Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Sat, 25 Oct 2014 01:59:36 +0000 (21:59 -0400)]
lib: add Text::justify
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 24 Oct 2014 23:58:38 +0000 (19:58 -0400)]
Merge: New constructors with the `new` keyword
`new` constructors where introduced with the FFI and generalized latter for intern methods.
This PR make them also legal with used-defined code in Nit.
~~~
abstract class Person
var age: Int
new(age: Int) do
if i < 18 then
return new Adult(age)
else
return new Child(age)
end
end
~~~
A `new` constructor is specified like a static method.
By default it returns the type of self, but this can be changed by the user.
This PR starts by generalizing the `new` constructors. Thus a lot of specific code in engine is removed.
Then additional rules are added to control the usage of user-defined `new` constructors.
The original code was great enough to accepts these new kind of method without heavy modification.
Pull-Request: #840
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Fri, 24 Oct 2014 23:58:35 +0000 (19:58 -0400)]
Merge: neo: Fix definition lists
Fix the code that load relationships between a property or a class and its definitions.
Pull-Request: #841
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Jean Privat <jean@pryen.org>
Jean Privat [Fri, 24 Oct 2014 23:58:26 +0000 (19:58 -0400)]
Merge: model: better implementation of the two `intro` methods
MClass and MProperty have a `intro` method to get the introducing
definition.
The initial implementation was to return the first known definition, that
make sense for a model constructed from a source-code where introductions
are read before refinements and redefinitions.
However, for a better robustness of the model that allows to load the
model form a serialized form or allows a model partially loaded, the
first-read definition is not necessary the intro.
This new implementation uses a different approach: the introduction is
the definition in the introducing compound (module for classes and
classdefs for properties). The introducing compound is known since the
construction, thus this new implementation is trivial and does not change
the API.
Rewrite-of: #841
Pull-Request: #843
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Jean Privat [Thu, 23 Oct 2014 15:43:04 +0000 (11:43 -0400)]
tests: update some tests because buggy `new` are let untyped
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Oct 2014 01:51:06 +0000 (21:51 -0400)]
tests: add base_new.nit
Signed-off-by: Jean Privat <jean@pryen.org>
Jean Privat [Thu, 23 Oct 2014 14:12:12 +0000 (10:12 -0400)]
typing: ANew accepts only `init` on concrete class
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Christophe Beaupré [Thu, 23 Oct 2014 19:33:17 +0000 (15:33 -0400)]
neo: Remove `is_intro`.
`is_intro` is computed by the model and is ignored anyway.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean Privat [Fri, 24 Oct 2014 00:37:53 +0000 (20:37 -0400)]
model: better implementation of the two `intro` methods
MClass and MProperty have a `intro` method the get the introducing
definition.
The initial implementation was to return the first known definition, that
make sense for a model constructed from a source-code where introductions
are read before refinements and redefinitions.
However, for a better robustness of the model that allows to load the
model form a serialized form or allows a model partially loaded, the
first-read definition is not necessary the intro.
This new implementation uses a different approach: the introduction is
the definition in the introducing compound (module for classes and
classdefs for properties). The introducing compound is known since the
construction, thus this new implementation is trivial and does not change
the API.
Signed-off-by: Jean Privat <jean@pryen.org>
Jean-Christophe Beaupré [Thu, 23 Oct 2014 19:18:11 +0000 (15:18 -0400)]
neo: Fix linking between `MProperty` and `MPropDef`.
At loading, `neo.nit` linked each `MPropDef` two times to its
`MProperty`.
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Jean Privat [Thu, 23 Oct 2014 01:48:05 +0000 (21:48 -0400)]
typing: `new`-fatories are like top-level methods
Signed-off-by: Jean Privat <jean@pryen.org>