asker-tool 2.1.2 → 2.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{LICENSE → LICENSE.txt} +0 -0
- data/README.md +17 -18
- data/bin/asker +1 -0
- data/lib/asker.rb +43 -74
- data/lib/asker/ai/ai.rb +4 -0
- data/lib/asker/ai/code/base_code_ai.rb +104 -0
- data/lib/asker/{code/ai → ai/code}/code_ai_factory.rb +11 -1
- data/lib/asker/{code/ai → ai/code}/javascript_code_ai.rb +2 -5
- data/lib/asker/ai/code/problem_code_ai.rb +176 -0
- data/lib/asker/{code/ai → ai/code}/python_code_ai.rb +2 -5
- data/lib/asker/{code/ai → ai/code}/ruby_code_ai.rb +14 -7
- data/lib/asker/{code/ai → ai/code}/sql_code_ai.rb +2 -5
- data/lib/asker/ai/concept_ai.rb +1 -0
- data/lib/asker/ai/stages/stage_t.rb +76 -76
- data/lib/asker/application.rb +19 -3
- data/lib/asker/checker.rb +152 -53
- data/lib/asker/cli.rb +19 -22
- data/lib/asker/data/code.rb +73 -0
- data/lib/asker/data/column.rb +31 -21
- data/lib/asker/data/concept.rb +42 -45
- data/lib/asker/data/data_field.rb +14 -0
- data/lib/asker/data/row.rb +75 -52
- data/lib/asker/data/table.rb +89 -42
- data/lib/asker/data/world.rb +58 -32
- data/lib/asker/{exporter/code_screen_exporter.rb → displayer/code_displayer.rb} +6 -6
- data/lib/asker/displayer/concept_ai_displayer.rb +132 -0
- data/lib/asker/displayer/concept_displayer.rb +29 -0
- data/lib/asker/displayer/stats_displayer.rb +14 -0
- data/lib/asker/exporter/code_gift_exporter.rb +10 -11
- data/lib/asker/exporter/concept_ai_gift_exporter.rb +23 -11
- data/lib/asker/exporter/concept_ai_yaml_exporter.rb +9 -7
- data/lib/asker/exporter/concept_doc_exporter.rb +9 -15
- data/lib/asker/exporter/output_file_exporter.rb +18 -0
- data/lib/asker/files/config.ini +37 -0
- data/lib/asker/files/example-code.haml +0 -0
- data/lib/asker/files/example-concept.haml +29 -0
- data/lib/asker/files/language/du/templates.yaml +50 -0
- data/lib/asker/files/language/en/connectors.yaml +44 -0
- data/lib/asker/files/language/en/mistakes.yaml +37 -0
- data/lib/asker/files/language/en/templates.yaml +29 -0
- data/lib/asker/files/language/es/connectors.yaml +92 -0
- data/lib/asker/files/language/es/mistakes.yaml +82 -0
- data/lib/asker/files/language/es/templates.yaml +29 -0
- data/lib/asker/files/language/fr/connectors.yaml +92 -0
- data/lib/asker/files/language/fr/mistakes.yaml +82 -0
- data/lib/asker/files/language/fr/templates.yaml +29 -0
- data/lib/asker/files/language/javascript/connectors.yaml +11 -0
- data/lib/asker/files/language/javascript/mistakes.yaml +30 -0
- data/lib/asker/files/language/javascript/templates.yaml +3 -0
- data/lib/asker/files/language/math/connectors.yaml +2 -0
- data/lib/asker/files/language/math/mistakes.yaml +2 -0
- data/lib/asker/files/language/math/templates.yaml +1 -0
- data/lib/asker/files/language/python/connectors.yaml +11 -0
- data/lib/asker/files/language/python/mistakes.yaml +26 -0
- data/lib/asker/files/language/python/templates.yaml +3 -0
- data/lib/asker/files/language/ruby/connectors.yaml +11 -0
- data/lib/asker/files/language/ruby/mistakes.yaml +33 -0
- data/lib/asker/files/language/ruby/templates.yaml +3 -0
- data/lib/asker/files/language/sql/connectors.yaml +6 -0
- data/lib/asker/files/language/sql/mistakes.yaml +11 -0
- data/lib/asker/files/language/sql/templates.yaml +2 -0
- data/lib/asker/formatter/concept_string_formatter.rb +9 -8
- data/lib/asker/formatter/question_gift_formatter.rb +9 -1
- data/lib/asker/lang/lang.rb +18 -12
- data/lib/asker/lang/lang_factory.rb +26 -5
- data/lib/asker/lang/text_actions.rb +87 -69
- data/lib/asker/loader/code_loader.rb +3 -3
- data/lib/asker/loader/content_loader.rb +9 -5
- data/lib/asker/loader/file_loader.rb +2 -11
- data/lib/asker/loader/haml_loader.rb +15 -0
- data/lib/asker/loader/image_url_loader.rb +5 -8
- data/lib/asker/loader/input_loader.rb +23 -7
- data/lib/asker/loader/project_loader.rb +32 -29
- data/lib/asker/logger.rb +3 -4
- data/lib/asker/project.rb +28 -52
- data/lib/asker/skeleton.rb +73 -0
- metadata +62 -73
- data/docs/changelog/v2.1.md +0 -99
- data/docs/commands.md +0 -15
- data/docs/contributions.md +0 -18
- data/docs/history.md +0 -40
- data/docs/idea.md +0 -44
- data/docs/inputs/README.md +0 -39
- data/docs/inputs/code.md +0 -69
- data/docs/inputs/concepts.md +0 -142
- data/docs/inputs/jedi.md +0 -68
- data/docs/inputs/tables.md +0 -112
- data/docs/inputs/templates.md +0 -87
- data/docs/install/README.md +0 -38
- data/docs/install/manual.md +0 -26
- data/docs/install/scripts.md +0 -26
- data/docs/revise/asker-file.md +0 -41
- data/docs/revise/buenas-practicas/01-convocatoria.md +0 -30
- data/docs/revise/buenas-practicas/02-formulario.md +0 -35
- data/docs/revise/buenas-practicas/03-descripcion.md +0 -63
- data/docs/revise/buenas-practicas/04-resultados.md +0 -17
- data/docs/revise/buenas-practicas/05-reproducir.md +0 -10
- data/docs/revise/ejemplos/01/README.md +0 -27
- data/docs/revise/ejemplos/02/README.md +0 -31
- data/docs/revise/ejemplos/03/README.md +0 -31
- data/docs/revise/ejemplos/04/README.md +0 -37
- data/docs/revise/ejemplos/05/README.md +0 -25
- data/docs/revise/ejemplos/06/README.md +0 -43
- data/docs/revise/ejemplos/README.md +0 -11
- data/docs/revise/projects.md +0 -74
- data/lib/asker/code/ai/base_code_ai.rb +0 -48
- data/lib/asker/code/code.rb +0 -53
- data/lib/asker/exporter/concept_ai_screen_exporter.rb +0 -115
- data/lib/asker/exporter/concept_screen_exporter.rb +0 -25
- data/lib/asker/exporter/main.rb +0 -9
data/docs/commands.md
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
|
2
|
-
[<<back](../README.md)
|
3
|
-
|
4
|
-
# Commands
|
5
|
-
|
6
|
-
By now, ASKER run as CLI command.
|
7
|
-
|
8
|
-
| Command | Description |
|
9
|
-
| ----------------------- | ------------------------------- |
|
10
|
-
| asker | Show available functions |
|
11
|
-
| asker version | Show current version |
|
12
|
-
| asker PATH/TO/INPUTFILE | Create questions for input file |
|
13
|
-
| asker file PATH/TO/INPUTFILE | File keyword is optional |
|
14
|
-
| asker check PATH/TO/INPUTFILE | Check HAML file syntax |
|
15
|
-
| asker init | Create default config.ini file |
|
data/docs/contributions.md
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](../README.md)
|
3
|
-
|
4
|
-
# Contributions
|
5
|
-
|
6
|
-
If you want to contribute:
|
7
|
-
* Talk about this tool with your colleagues.
|
8
|
-
* Use this tool.
|
9
|
-
* Report bugs.
|
10
|
-
* Report us, your ideas for new features.
|
11
|
-
* Share with us your own input files.
|
12
|
-
* And if you love `ruby`, you can develop with us or work on the issues.
|
13
|
-
|
14
|
-
---
|
15
|
-
# Contact
|
16
|
-
|
17
|
-
* **Email**: `teuton.software@protonmail.com`
|
18
|
-
* **Twitter**: `@SoftwareTeuton`
|
data/docs/history.md
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](../README.md)
|
3
|
-
|
4
|
-
# History
|
5
|
-
|
6
|
-
> Some time ago, this project was called "Darts of teacher". We renamed it because "darts" was used. Now, it's called ASKER.
|
7
|
-
|
8
|
-
## The problem
|
9
|
-
|
10
|
-
Working as a teacher, one of the most boring taks is check the same exercises
|
11
|
-
again and again, for every student, and every year.
|
12
|
-
|
13
|
-
The tests questions allow us to make activities that are automaticaly checked/resolved by software tools, as for example, Moodle cuestionairs.
|
14
|
-
In this case, the teacher will have enough time to waste others tasks, as:
|
15
|
-
* Analise results with detail.
|
16
|
-
* Read information about others materials.
|
17
|
-
* Test new aplications.
|
18
|
-
* Develop new tools.
|
19
|
-
* Etc.
|
20
|
-
|
21
|
-
In resume, applying more new knowledge to improve his work,
|
22
|
-
trying new ways of doing his job better, finding or redefining activities or lessons contents. Just finding a better way of teaching. And an easier way of learning for the students.
|
23
|
-
|
24
|
-
## Need a new tool
|
25
|
-
|
26
|
-
I decide (about 2013) start writing this tool to help me
|
27
|
-
with the process of making test questions from input definition files.
|
28
|
-
|
29
|
-
With this tool, I only waste time making this input file.
|
30
|
-
As a teacher I have this knowledge into my mind, so it will be easy.
|
31
|
-
It's the resume, definitions or conceptual entities of the unit
|
32
|
-
I'm teaching.
|
33
|
-
|
34
|
-
I've been using this tools several years/courses, teaching computer
|
35
|
-
science. I have a lot of work to improve it and new features to add.
|
36
|
-
It's usefull (for me at least), and hope It'll be for you too.
|
37
|
-
|
38
|
-
;-)
|
39
|
-
|
40
|
-
David Vargas
|
data/docs/idea.md
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](../README.md)
|
3
|
-
|
4
|
-
# Basics
|
5
|
-
|
6
|
-
> **Disclaimber**
|
7
|
-
>
|
8
|
-
> I work as a teacher, and I try to do the best I know. But I'm really a programmer. I studied Computer Science at *ULPGC*.
|
9
|
-
>
|
10
|
-
> The 90% of what I've learned, I must thank to *Open Source* community.
|
11
|
-
The other 10%, It's luck and time wasted working.
|
12
|
-
|
13
|
-
## Open vs closed problems
|
14
|
-
|
15
|
-
The big problem with test questions are that only are usefull to evaluate
|
16
|
-
measurable features. So it is useless when we try measure abstract
|
17
|
-
features or measure open problems. But I think, we can do it with another approach.
|
18
|
-
|
19
|
-
I mean, if we get an open and abstract problem, their resolution will consist on several steps or measurable milestones. So we can transform an open problem, into a lot of closed mini-problems. And we have to focus on the measurable aspects.
|
20
|
-
|
21
|
-
Besides, if I *"bomb"* the student with a huge amount of diferent test questions about one concept, probably I could be near of knowing and measuring, the student asimilation of that kownledge.
|
22
|
-
|
23
|
-
## Making Questions
|
24
|
-
|
25
|
-
The task of creating test questions to solve the previous problem, becames another different problem to be solved. When I had to make manually this test questions, it took me a lot of time. And I need a lot.
|
26
|
-
|
27
|
-
And usually when I was making the question number 42, I realise that I forgot the content of the 41 previous. I'm loosing time and it's slow.
|
28
|
-
|
29
|
-
## Work once
|
30
|
-
|
31
|
-
Finally, I decide to write this tool that help me with the process of
|
32
|
-
making test questions from input definition files.
|
33
|
-
|
34
|
-
So I only waste time making an input file. But as a teacher I have this
|
35
|
-
into my mind and it must be a simple job. Because the inpu file it's just a resumed concepts list about the unit I'm teaching.
|
36
|
-
|
37
|
-
I've been using this tools several years/courses, teaching computer
|
38
|
-
science. I have a lot of functions to be improved and features to be added.
|
39
|
-
But for now, It's usefull (for me at least), and hope it will be for you too.
|
40
|
-
;-)
|
41
|
-
|
42
|
-
_Thanks!_
|
43
|
-
|
44
|
-
David Vargas
|
data/docs/inputs/README.md
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](../../README.md)
|
3
|
-
|
4
|
-
# Inputs
|
5
|
-
|
6
|
-
---
|
7
|
-
|
8
|
-
## Text plain editor
|
9
|
-
|
10
|
-
How to build our asker input files?
|
11
|
-
|
12
|
-
Open a plain text editor and start writting definitions.
|
13
|
-
* [Learn about concepts](concepts.md)
|
14
|
-
* [Learn about tables](tables.md)
|
15
|
-
* [Learn about templates](templates.md)
|
16
|
-
* [Learn about code](code.md)
|
17
|
-
|
18
|
-
---
|
19
|
-
|
20
|
-
## Web editor (On development)
|
21
|
-
|
22
|
-
Asker has a web editor to help building our asker input files.
|
23
|
-
By now only read, do not write. Sorry! Still is on development.
|
24
|
-
|
25
|
-
Looks like this:
|
26
|
-
|
27
|
-
![](../images/web-editor.png)
|
28
|
-
|
29
|
-
To launch web editor:
|
30
|
-
1. `asker editor`
|
31
|
-
1. Open web browser and goto URL `localhost:4567`.
|
32
|
-
|
33
|
-
---
|
34
|
-
|
35
|
-
## More examples
|
36
|
-
|
37
|
-
Download our git repository with a lot of examples:
|
38
|
-
* `asker donwnload` or
|
39
|
-
* `git clone https://github.com/dvarrui/asker-inputs.git`
|
data/docs/inputs/code.md
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](README.md)
|
3
|
-
|
4
|
-
# Learn code
|
5
|
-
|
6
|
-
Now, we are going to learn experimental keywords:
|
7
|
-
* code
|
8
|
-
|
9
|
-
---
|
10
|
-
|
11
|
-
# Concept limits
|
12
|
-
|
13
|
-
We have learn about using: map, concept, names, tags, def, table and template keywords. All them are usefull to define concepts.
|
14
|
-
|
15
|
-
Commonly we use natural lenguages (en, es, fr, de, etc) to talk about them and Asker DSL is a simpler and structured language version. All languages are similar (verbs, subjects, adjective, etc.), but have their own rules.
|
16
|
-
A poem, for example is writting using those rules.
|
17
|
-
|
18
|
-
Exists others kind of human creations, that use other definition languages.
|
19
|
-
For example, programming languages, file configurations, drawing language, math language, etc,
|
20
|
-
|
21
|
-
So we had to create new DSL keyword called `code`.
|
22
|
-
|
23
|
-
Let's see.
|
24
|
-
|
25
|
-
---
|
26
|
-
# Code
|
27
|
-
|
28
|
-
## Example
|
29
|
-
|
30
|
-
Example, using `code`keyword to define a python program from `files/string.py`file:
|
31
|
-
|
32
|
-
```
|
33
|
-
%map{ :version => '1', :lang => 'en', :context=>'python, programming, language' }
|
34
|
-
|
35
|
-
%code
|
36
|
-
%type python
|
37
|
-
%path files/string.py
|
38
|
-
```
|
39
|
-
|
40
|
-
| Param | Description |
|
41
|
-
| ----- | ------------------------- |
|
42
|
-
| code | Define a new code concept |
|
43
|
-
| type | Content type |
|
44
|
-
| path | Path to content file |
|
45
|
-
|
46
|
-
> Experimental type values: python, ruby, javascript, sql
|
47
|
-
|
48
|
-
## Full map
|
49
|
-
|
50
|
-
Example, using `code`keyword to define several python programs from `files/` folder:
|
51
|
-
|
52
|
-
```
|
53
|
-
%map{ :version => '1', :lang => 'en', :context=>'python, programming, language' }
|
54
|
-
|
55
|
-
%code
|
56
|
-
%type python
|
57
|
-
%path files/string.py
|
58
|
-
|
59
|
-
%code
|
60
|
-
%type python
|
61
|
-
%path files/array.py
|
62
|
-
|
63
|
-
%code
|
64
|
-
%type python
|
65
|
-
%path files/iterator.py
|
66
|
-
```
|
67
|
-
|
68
|
-
Example:
|
69
|
-
* [python](../examples/code)
|
data/docs/inputs/concepts.md
DELETED
@@ -1,142 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](README.md)
|
3
|
-
|
4
|
-
# Learn basics
|
5
|
-
|
6
|
-
To know how to build our asker input files, we need to learn
|
7
|
-
main keywords:
|
8
|
-
* map
|
9
|
-
* concept
|
10
|
-
* names
|
11
|
-
* tags
|
12
|
-
* def
|
13
|
-
|
14
|
-
Let's start!.
|
15
|
-
|
16
|
-
---
|
17
|
-
|
18
|
-
# Text plain editor
|
19
|
-
|
20
|
-
* Create a text file, called for example: `demo/furniture.haml`.
|
21
|
-
* **map**: Once, at first line, we write keyword `map`. Example:
|
22
|
-
|
23
|
-
```ruby
|
24
|
-
%map{ :lang => 'en', :context => 'furniture, home', :version => '1'}
|
25
|
-
```
|
26
|
-
|
27
|
-
| Attribute | Description |
|
28
|
-
| --------- | ---------------------------------------------- |
|
29
|
-
| lang | Output texts will be created in English. Valid values: en, es |
|
30
|
-
| context | Comma separated labels that define map content |
|
31
|
-
| version | Input file format version. Valid value: 1 |
|
32
|
-
|
33
|
-
This input file will contain concepts about furniture context.
|
34
|
-
Use diferents input files to define diferents contexts.
|
35
|
-
|
36
|
-
> Use separated contexts is good idea. Sometimes, diferents concept from diferents contexts has the same `names` value. For example:
|
37
|
-
> * free as free of charge, costless.
|
38
|
-
> * free as in freedom.
|
39
|
-
|
40
|
-
* **concept, names, tags**: So we define our first concept:
|
41
|
-
|
42
|
-
```
|
43
|
-
%concept
|
44
|
-
%names chair
|
45
|
-
%tags single, seat, leg, backrest
|
46
|
-
```
|
47
|
-
|
48
|
-
| Param | Description |
|
49
|
-
| ----- | ------------------------------- |
|
50
|
-
| names | Comma separated concept's names |
|
51
|
-
| tags | Comma separated tags that help to identify this concept |
|
52
|
-
|
53
|
-
* **def**: Use def keyword to add concept meaning. The `def` content must uniquely identifies our concept. You can use `def` more than once.
|
54
|
-
|
55
|
-
```
|
56
|
-
%concept
|
57
|
-
%names chair
|
58
|
-
%tags single, seat, leg, backrest
|
59
|
-
%def Single seat with legs and backrest
|
60
|
-
%def Furniture that is placed around the table to sit
|
61
|
-
```
|
62
|
-
|
63
|
-
At this time, we may generate questions with:
|
64
|
-
|
65
|
-
```bash
|
66
|
-
asker demo/furniture.haml
|
67
|
-
```
|
68
|
-
|
69
|
-
---
|
70
|
-
|
71
|
-
# Formats
|
72
|
-
|
73
|
-
HAML is a special format. It's necesary write exactly:
|
74
|
-
* 0 spaces before map.
|
75
|
-
* 2 spaces before concept.
|
76
|
-
* 4 spaces before names, tags and def.
|
77
|
-
|
78
|
-
It's posible write the same using XML format instead. Take a look:
|
79
|
-
|
80
|
-
```xml
|
81
|
-
<map lang='en' context='furniture, home' version='1'>
|
82
|
-
<concept>
|
83
|
-
<names>chair</names>
|
84
|
-
<tags>single, seat, leg, backrest</tags>
|
85
|
-
<def>Single seat with legs and backrest</def>
|
86
|
-
<def>Furniture that is placed around the table to sit</def>
|
87
|
-
</concept>
|
88
|
-
</map>
|
89
|
-
```
|
90
|
-
|
91
|
-
Notice that `demo/furniture.haml` is HAML file and `demo/furniture.xml` a XML file. Both are valid.
|
92
|
-
|
93
|
-
> HAML format files are the same as XML format files.
|
94
|
-
Internaly HAML files are translated automaticaly to an XML equivalent.
|
95
|
-
>
|
96
|
-
> Why write into HAML instead of XML? HAML It's easier (for me).
|
97
|
-
You don't have to close every tag, only be carefuly with indentation.
|
98
|
-
>
|
99
|
-
> If you prefer, you could write your input files using XML.
|
100
|
-
|
101
|
-
---
|
102
|
-
|
103
|
-
# Adding images
|
104
|
-
|
105
|
-
Example:
|
106
|
-
![](https://www.portobellostreet.es/imagenes_muebles/Muebles-Silla-colonial-Fusta-Bora-Bora.jpg)
|
107
|
-
|
108
|
-
**def** can be used with image URL. So we have to find an image that uniquely identifies our concept and write this:
|
109
|
-
|
110
|
-
```
|
111
|
-
%def{:type => 'image_url'}https://www.portobellostreet.es/imagenes_muebles/Muebles-Silla-colonial-Fusta-Bora-Bora.jpg
|
112
|
-
```
|
113
|
-
|
114
|
-
| Attribute | Description |
|
115
|
-
| --------- | ------------ |
|
116
|
-
| type | Content type |
|
117
|
-
|
118
|
-
---
|
119
|
-
|
120
|
-
# Increase questions number
|
121
|
-
|
122
|
-
Adding more concepts will increase questions number generated by ASKER:
|
123
|
-
|
124
|
-
```
|
125
|
-
%concept
|
126
|
-
%names couch
|
127
|
-
%tags furniture, seat, two, threee, people, bench, armrest
|
128
|
-
|
129
|
-
%concept
|
130
|
-
%names table
|
131
|
-
%tags furniture, flat, top, leg, surface, work, eat
|
132
|
-
|
133
|
-
%concept
|
134
|
-
%names bed
|
135
|
-
%tags furniture, place, sleep, relax
|
136
|
-
```
|
137
|
-
|
138
|
-
Examples:
|
139
|
-
* [furniture.haml](../examples/home/furniture.haml)
|
140
|
-
* [furniture.xml](../examples/home/xml/furniture.xml)
|
141
|
-
|
142
|
-
[>> Learn about tables](tables.md)
|
data/docs/inputs/jedi.md
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
|
2
|
-
# Jedi
|
3
|
-
|
4
|
-
Inputs
|
5
|
-
======
|
6
|
-
|
7
|
-
Into *maps* directory we save our own concept map files. We could use subdirectories to
|
8
|
-
better organization. As example we have the file `maps/demo/starwars/jedi.haml`, that
|
9
|
-
contains one concept map about Jedi characters of StarWars film into HAML format.
|
10
|
-
|
11
|
-
Let's take a look (Spanish example, I know. Soon I'll write the english version):
|
12
|
-
```
|
13
|
-
%map{ :lang => 'en', :context => 'character, starwars', :version => '1'}
|
14
|
-
|
15
|
-
%concept
|
16
|
-
%names obiwan
|
17
|
-
%tags jedi, teacher, annakin, skywalker, pupil, quigon-jinn
|
18
|
-
%def Jedi, teacher of Annakin Skywalker
|
19
|
-
%def Jedi, pupil of Quigon-Jinn
|
20
|
-
%table{ :fields => 'attribute, value' }
|
21
|
-
%title Associate every attribute with their value
|
22
|
-
%row
|
23
|
-
%col race
|
24
|
-
%col human
|
25
|
-
%row
|
26
|
-
%col laser sabel color
|
27
|
-
%col green
|
28
|
-
%row
|
29
|
-
%col hair color
|
30
|
-
%col red
|
31
|
-
|
32
|
-
%concept
|
33
|
-
%names yoda
|
34
|
-
%tags teacher, jedi
|
35
|
-
%def Jedi, teacher of all jedis
|
36
|
-
%def The Main Teacher of Jedi and one of the most important members of the Main Jedi Council, in the last days of Star Republic.
|
37
|
-
%def He has exceptional combat abilities with light sable, using acrobatics tecnics from Ataru.
|
38
|
-
%def He was master of all light sable combat styles and was considered during years as a Sword Master.
|
39
|
-
%table{ :fields => 'attribute, value' }
|
40
|
-
%row
|
41
|
-
%col color laser sabel
|
42
|
-
%col green
|
43
|
-
%row
|
44
|
-
%col hair color
|
45
|
-
%col white
|
46
|
-
%row
|
47
|
-
%col skin color
|
48
|
-
%col green
|
49
|
-
%row
|
50
|
-
%col high
|
51
|
-
%col 65 centimetres
|
52
|
-
...
|
53
|
-
```
|
54
|
-
As we see, we defined 2 concepts about Jedi characters. This are `obiwan` and `yoda`.
|
55
|
-
And we use special sintax (tags) to define it.
|
56
|
-
|
57
|
-
At now we have a this list of tags to define our own sintax for build conceptual maps:
|
58
|
-
* **context**: List of comma separated words, that identify the context where this concept "lives" or "exists".
|
59
|
-
* **names**: List of one or more names that identify the concept. At least one is requiered, of course!.
|
60
|
-
* **tags**: List of comma separated words, that briefly describe the concept. I mean, a short list of words
|
61
|
-
that came in mind when we think in it, and are useful for their identification.
|
62
|
-
* **def**: We use this tags as many times we need. In it, we write using natural language descriptions
|
63
|
-
asssociated to the concept. This are definitions/descriptions that are uniques
|
64
|
-
for this concept, but don't write the name of the concept into the text.
|
65
|
-
* **table**: Other way to build more sofisticated definitions/schemas is using "tables". It's similar
|
66
|
-
to HTML tag. I mean, with this "table", we build tables of knowledge into the concept. We use "row",
|
67
|
-
and "col", to defines table-rows and row-cols, of course. We could see an
|
68
|
-
example into `input/en/starwars/jedi.haml`.
|
data/docs/inputs/tables.md
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
|
2
|
-
[<< back](README.md)
|
3
|
-
|
4
|
-
# Learn tables
|
5
|
-
|
6
|
-
Now, we are going to learn keywords:
|
7
|
-
* table
|
8
|
-
* row
|
9
|
-
* col
|
10
|
-
|
11
|
-
Let's go!.
|
12
|
-
|
13
|
-
---
|
14
|
-
|
15
|
-
# Def limits
|
16
|
-
|
17
|
-
We have learn that:
|
18
|
-
* **map** serves to identify an input file.
|
19
|
-
* **concept**, **names** and **tags** serves to identify a concept.
|
20
|
-
* **def** serves to add meaning to a concept.
|
21
|
-
|
22
|
-
But, it's not enough. **def** only contains meaning that could only be associated to one unique concept. For example:
|
23
|
-
```
|
24
|
-
%concept
|
25
|
-
%names AC/DC, ACDC
|
26
|
-
%tags rock, band, australia
|
27
|
-
%def Australian rock band formed by Scottish-born brothers Malcolm and Angus Young
|
28
|
-
```
|
29
|
-
|
30
|
-
**def** is good but we need other keyword to add meaning that isn't uniquely associated to one concept. That is **table** keyword.
|
31
|
-
|
32
|
-
---
|
33
|
-
# Tables
|
34
|
-
|
35
|
-
## Table with 1 field
|
36
|
-
|
37
|
-
Example, adding meaning using 1 field table. Field called `members`:
|
38
|
-
|
39
|
-
```
|
40
|
-
%concept
|
41
|
-
%names AC/DC, ACDC
|
42
|
-
%tags single, seat, leg, backrest
|
43
|
-
%tags rock, band, australia
|
44
|
-
%table{ :fields => 'members'}
|
45
|
-
%row Bon Scott
|
46
|
-
%row Angus Young
|
47
|
-
%row Malcolm Young
|
48
|
-
%row Phil Rudd
|
49
|
-
%row Cliff Williams
|
50
|
-
```
|
51
|
-
|
52
|
-
| Param | Description |
|
53
|
-
| ------ | ----------- |
|
54
|
-
| table | Group rows |
|
55
|
-
| fields | Comma separated values with field name |
|
56
|
-
| row | Field value |
|
57
|
-
|
58
|
-
## Table with 2 fields
|
59
|
-
|
60
|
-
Example, adding meaning using 2 fields table. Fields called `attribute` and `value`:
|
61
|
-
|
62
|
-
```
|
63
|
-
%concept
|
64
|
-
%names AC/DC, ACDC
|
65
|
-
%tags single, seat, leg, backrest
|
66
|
-
%tags rock, band, australia
|
67
|
-
%table{ :fields => 'attribute, value'}
|
68
|
-
%row
|
69
|
-
%col Genres
|
70
|
-
%col Hard rock blues rock rock and roll
|
71
|
-
%row
|
72
|
-
%col Years active
|
73
|
-
%col 1973–present
|
74
|
-
%row
|
75
|
-
%col Origin
|
76
|
-
%col Sydney
|
77
|
-
```
|
78
|
-
|
79
|
-
| Param | Description |
|
80
|
-
| ------ | ------------------ |
|
81
|
-
| table | Group rows |
|
82
|
-
| fields | Comma separated values with field names |
|
83
|
-
| row | Group cols |
|
84
|
-
| col | Field column value |
|
85
|
-
|
86
|
-
## Table with Sequence
|
87
|
-
|
88
|
-
Sometimes we have a 1 field table where rows are sorted or form a sequence. In that cases we also could take advantage defining a `sequence`, like:
|
89
|
-
|
90
|
-
```
|
91
|
-
%concept
|
92
|
-
%names AC/DC, ACDC
|
93
|
-
%tags single, seat, leg, backrest
|
94
|
-
%tags rock, band, australia
|
95
|
-
%table{ :fields => 'Albums', :sequence => 'Albums sorted by date'}
|
96
|
-
%row Albums High Voltage
|
97
|
-
%row Powerage
|
98
|
-
%row Highway to Hell
|
99
|
-
%row Back in Black
|
100
|
-
%row Ballbreaker
|
101
|
-
%row Rock or Bust
|
102
|
-
```
|
103
|
-
|
104
|
-
| Param | Description |
|
105
|
-
| -------- | ------------------ |
|
106
|
-
| table | Group rows |
|
107
|
-
| fields | Field name |
|
108
|
-
| sequence | Label form ordered values |
|
109
|
-
| row | Field value |
|
110
|
-
|
111
|
-
Example:
|
112
|
-
* [acdc.haml](../examples/bands/acdc.haml)
|