asker-tool 2.1.3 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -17
  3. data/lib/asker.rb +40 -83
  4. data/lib/asker/application.rb +1 -1
  5. data/lib/asker/checker.rb +42 -25
  6. data/lib/asker/cli.rb +1 -1
  7. data/lib/asker/data/world.rb +2 -0
  8. data/lib/asker/{exporter/code_screen_exporter.rb → displayer/code_displayer.rb} +6 -6
  9. data/lib/asker/{exporter/concept_ai_screen_exporter.rb → displayer/concept_ai_displayer.rb} +27 -29
  10. data/lib/asker/displayer/concept_displayer.rb +27 -0
  11. data/lib/asker/displayer/stats_displayer.rb +13 -0
  12. data/lib/asker/exporter/code_gift_exporter.rb +10 -11
  13. data/lib/asker/exporter/concept_ai_gift_exporter.rb +9 -9
  14. data/lib/asker/exporter/concept_ai_yaml_exporter.rb +2 -4
  15. data/lib/asker/exporter/concept_doc_exporter.rb +9 -15
  16. data/lib/asker/exporter/output_file_exporter.rb +18 -0
  17. data/lib/asker/files/example-concept.haml +25 -8
  18. data/lib/asker/formatter/concept_string_formatter.rb +9 -8
  19. data/lib/asker/lang/lang.rb +3 -4
  20. data/lib/asker/lang/locales/du/templates.yaml +50 -0
  21. data/lib/asker/lang/locales/en/connectors.yaml +44 -0
  22. data/lib/asker/lang/locales/en/mistakes.yaml +37 -0
  23. data/lib/asker/lang/locales/en/templates.yaml +29 -0
  24. data/lib/asker/lang/locales/es/connectors.yaml +92 -0
  25. data/lib/asker/lang/locales/es/mistakes.yaml +82 -0
  26. data/lib/asker/lang/locales/es/templates.yaml +29 -0
  27. data/lib/asker/lang/locales/fr/connectors.yaml +92 -0
  28. data/lib/asker/lang/locales/fr/mistakes.yaml +82 -0
  29. data/lib/asker/lang/locales/fr/templates.yaml +29 -0
  30. data/lib/asker/lang/locales/javascript/connectors.yaml +11 -0
  31. data/lib/asker/lang/locales/javascript/mistakes.yaml +30 -0
  32. data/lib/asker/lang/locales/javascript/templates.yaml +3 -0
  33. data/lib/asker/lang/locales/math/connectors.yaml +2 -0
  34. data/lib/asker/lang/locales/math/mistakes.yaml +2 -0
  35. data/lib/asker/lang/locales/math/templates.yaml +1 -0
  36. data/lib/asker/lang/locales/python/connectors.yaml +11 -0
  37. data/lib/asker/lang/locales/python/mistakes.yaml +26 -0
  38. data/lib/asker/lang/locales/python/templates.yaml +3 -0
  39. data/lib/asker/lang/locales/ruby/connectors.yaml +11 -0
  40. data/lib/asker/lang/locales/ruby/mistakes.yaml +33 -0
  41. data/lib/asker/lang/locales/ruby/templates.yaml +3 -0
  42. data/lib/asker/lang/locales/sql/connectors.yaml +6 -0
  43. data/lib/asker/lang/locales/sql/mistakes.yaml +11 -0
  44. data/lib/asker/lang/locales/sql/templates.yaml +2 -0
  45. data/lib/asker/loader/input_loader.rb +22 -5
  46. data/lib/asker/loader/project_loader.rb +25 -24
  47. data/lib/asker/logger.rb +1 -2
  48. data/lib/asker/project.rb +5 -3
  49. data/lib/asker/skeleton.rb +25 -24
  50. metadata +47 -63
  51. data/docs/changelog/v2.1.md +0 -99
  52. data/docs/commands.md +0 -12
  53. data/docs/contributions.md +0 -18
  54. data/docs/history.md +0 -40
  55. data/docs/idea.md +0 -44
  56. data/docs/inputs/README.md +0 -39
  57. data/docs/inputs/code.md +0 -69
  58. data/docs/inputs/concepts.md +0 -142
  59. data/docs/inputs/jedi.md +0 -68
  60. data/docs/inputs/tables.md +0 -112
  61. data/docs/inputs/templates.md +0 -87
  62. data/docs/install/README.md +0 -38
  63. data/docs/install/manual.md +0 -26
  64. data/docs/install/scripts.md +0 -38
  65. data/docs/revise/asker-file.md +0 -41
  66. data/docs/revise/buenas-practicas/01-convocatoria.md +0 -30
  67. data/docs/revise/buenas-practicas/02-formulario.md +0 -35
  68. data/docs/revise/buenas-practicas/03-descripcion.md +0 -63
  69. data/docs/revise/buenas-practicas/04-resultados.md +0 -17
  70. data/docs/revise/buenas-practicas/05-reproducir.md +0 -10
  71. data/docs/revise/ejemplos/01/README.md +0 -27
  72. data/docs/revise/ejemplos/02/README.md +0 -31
  73. data/docs/revise/ejemplos/03/README.md +0 -31
  74. data/docs/revise/ejemplos/04/README.md +0 -37
  75. data/docs/revise/ejemplos/05/README.md +0 -25
  76. data/docs/revise/ejemplos/06/README.md +0 -43
  77. data/docs/revise/ejemplos/README.md +0 -11
  78. data/docs/revise/projects.md +0 -74
  79. data/lib/asker/exporter/concept_screen_exporter.rb +0 -25
  80. data/lib/asker/exporter/main.rb +0 -9
@@ -0,0 +1,29 @@
1
+ ---
2
+ :none: "Aucune réponse n'est correcte"
3
+ :error: 'Erreur'
4
+ :misspelling: 'Erreur ortographique'
5
+ :true: 'Vrai'
6
+ :false: 'Faux'
7
+ :d1: "Définition \\: <i><%=text1%></i><br/>Choisissez l'option qui correspond le mieux à la définition précédente.<br/>"
8
+ :d2: 'Définition de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/>'
9
+ :d3: 'Définition de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/></br><p>Note: Chaque symbole ? représente une lettre, et * un ou plusieurs mots.</p>'
10
+ :d4: 'Définition de <b><%=text1%></b>\:<br/> <i><%=text2%></i><br/><br/>(Mettez chaque mot à la bonne position dans le texte)'
11
+ :b1: 'Par rapport au concept <b><%=text1%></b>, associez chaque "<%=text2%>" avec son,sa "<%=text3%>".<br/>'
12
+ :f1: 'Les éléments suivants sont "<%=text2%>" du concept <b><%=text1%></b>\:<ul><li><%=text3%></li></ul>'
13
+ :f2: "Les éléments suivants sont \"<%=text2%>\".<br/>Sélectionnez l' option qui n'appartient pas au concept <b><%=text1%></b>."
14
+ :f3: 'Les éléments suivants sont "<%=text2%>" du concept <b><%=text1%></b>\:<br><p><%=text3%></p>(Mettez chaque mot à la bonne position dans le texte)'
15
+ :i1: "<img src=\"<%=text1%>\" alt\\=\"image\" width=\"400\" height=\"300\"><br/>Choisissez l'option qui correspond le mieux à l'image précédente.<br/>"
16
+ :i2: "<img src=\"<%=text1%>\" alt\\=\"image\" width=\"400\" height=\"300\"><br/>L'image précédente correspond à <b><%=text2%></b>."
17
+ :i3: "<img src=\"<%=text1%>\" alt\\=\"image\" width=\"400\" height=\"300\"><br/>Écrivez l'option <%=text2%>, qui correspond le mieux à l'image précédente.<br/>"
18
+ :i4: '<img src="<%=text1%>" alt\="image" width="400" height="300"><br/>Définition\: <i><%=text2%></i><br/><br/>(Mettez chaque mot à la bonne position dans le texte)'
19
+ :s1: 'Par rapport au concept <b><%=text1%></b>, mettez dans l'ordre chaque "<%=text2%>" afin que le critère soit rempli "<%=text3%>".<br/>'
20
+ :t1table: 'Concept <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Choisissez l'option correcte.<br/>'
21
+ :t2table: 'Concept <b><%=text1%></b><br/><%=text2%>\: [*]<br/><%=text3%>\: "<%=text4%>"<br/>Choisissez l'option correcte.<br/>'
22
+ :t3table: 'Concept <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Choisissez l'option correcte.<br/>'
23
+ :t4table: 'Concept <b><%=text1%></b><br/><%=text2%>\: "<%=text3%>"<br/><%=text4%>: [*]<br/>Choisissez l'option correcte.<br/>'
24
+ :t5table: 'Concept <b><%=text1%></b><br/>L'association suivante est correcte\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
25
+ :t6table: 'Concept <b><%=text1%></b><br/>L'association suivante est correcte\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
26
+ :t7table: 'Concept <b><%=text1%></b><br/>L'association suivante est correcte\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: "<%=text5%>"</li></ul>'
27
+ :t8table: 'Concept <b><%=text1%></b><br/>Complétez l'association suivante\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: [*]</li></ul>Écrire un mot.<br/>'
28
+ :t9table: 'Concept <b><%=text1%></b><br/>Complétez l'association suivante\:<br/><ul><li><%=text2%>\: "<%=text3%>"</li><li><%=text4%>\: <%=text5%></li></ul>Écrire<%=text6%> mots.<br/>'
29
+ :code1: '<pre><%=text1%></pre><br/><p>Écrire le numéro de ligne où se trouve la première erreur. Écrire 0 s'il n'y a aucune erreur.</p>'
@@ -0,0 +1,11 @@
1
+ ---
2
+ - '[*]'
3
+ - '.'
4
+ - ','
5
+ - ';'
6
+ - '('
7
+ - ')'
8
+ - '{'
9
+ - '}'
10
+ - '['
11
+ - ']'
@@ -0,0 +1,30 @@
1
+ ---
2
+ :'else': 'else:'
3
+ :elif: 'elseif,else if,elsif'
4
+ :if: 'fi'
5
+ :'document.': 'documento.,document .'
6
+ :'write(': 'write.(,print(,(write '
7
+ :alert: 'alerta,aletr,alart'
8
+ :new: 'nev,naw'
9
+ :function: 'funtion,funtcion,def,defun'
10
+ :#!: '#'
11
+ :": "', "
12
+ :': '", '
13
+ :', ': '; ,. '
14
+ :.: ' ,:,;,. '
15
+ :,: ' ,.,;'
16
+ :;: ':, '
17
+ :(: '[,\{,),(('
18
+ :((: '('
19
+ :): '],\},(,))'
20
+ :)): ')'
21
+ :{: '[,(,\}'
22
+ :}: '],),\}'
23
+ :==: '\=,!='
24
+ :=>: '==,\=,<=,>>,->'
25
+ :' = ': ' == '
26
+ :'!=': '==,\='
27
+ :' + ': ' - '
28
+ :' - ': ' + '
29
+ :'-': '_'
30
+ :'_': '-'
@@ -0,0 +1,3 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
3
+ :code2: '<pre><%=text1%></pre><br/><p>Elegir el número de línea donde está el primer error. Elegir 0 si no hay ningún error.</p>'
@@ -0,0 +1,2 @@
1
+ ---
2
+ - '[*]'
@@ -0,0 +1,2 @@
1
+ ---
2
+ :0: '1'
@@ -0,0 +1 @@
1
+ ---
@@ -0,0 +1,11 @@
1
+ ---
2
+ - '[*]'
3
+ - '.'
4
+ - ','
5
+ - ';'
6
+ - '('
7
+ - ')'
8
+ - '{'
9
+ - '}'
10
+ - '['
11
+ - ']'
@@ -0,0 +1,26 @@
1
+ ---
2
+ :'else:': 'else '
3
+ :elif: 'elseif,else if,elsif'
4
+ :if: 'fi'
5
+ :' print ': ' puts , prints, echo '
6
+ :#!: '#'
7
+ :": "', "
8
+ :': '", '
9
+ :', ': '; ,. '
10
+ :.: ' ,:,;'
11
+ :,: ' ,.,;'
12
+ :;: ':'
13
+ :(: '[,\{,)'
14
+ :((: '('
15
+ :): '],\},('
16
+ :)): ')'
17
+ :{: '[,(,\}'
18
+ :}: '],),\}'
19
+ :==: '\=,!='
20
+ :=>: '==,\=,<=,>>,->'
21
+ :' = ': ' == '
22
+ :'!=': '==,\='
23
+ :' + ': ' - '
24
+ :' - ': ' + '
25
+ :'-': '_'
26
+ :'_': '-'
@@ -0,0 +1,3 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
3
+ :code2: '<pre><%=text1%></pre><br/><p>Elegir el número de línea donde está el primer error. Elegir 0 si no hay ningún error.</p>'
@@ -0,0 +1,11 @@
1
+ ---
2
+ - '[*]'
3
+ - '.'
4
+ - ','
5
+ - ';'
6
+ - '('
7
+ - ')'
8
+ - '{'
9
+ - '}'
10
+ - '['
11
+ - ']'
@@ -0,0 +1,33 @@
1
+ ---
2
+ :' do ': ' ( , [ '
3
+ :' elsif ': ' elif , else if , elseif '
4
+ :' else ': ' if , els , elseif '
5
+ :end: 'edn,begin,],), '
6
+ :' if ': ' unless , fi , else '
7
+ :' unless ': ' if , unles '
8
+ :' puts ': ' put , prints, echo '
9
+ :system(: 'sistem(,execute('
10
+ :'.each ': 'each ,.split '
11
+ :.split: '.each,.spilt,split'
12
+ :#!: '# '
13
+ :": "', "
14
+ :': '", '
15
+ :', ': '; ,. '
16
+ :|: ' ,('
17
+ :.: ' ,:,;'
18
+ :,: ' ,.,;'
19
+ :;: ':'
20
+ :(: '[,)'
21
+ :((: '('
22
+ :): '],('
23
+ :)): ')'
24
+ :{: 'do,[,('
25
+ :}: 'end,],)'
26
+ :==: '\=,!='
27
+ :=>: '==,\=,<=,>>,->'
28
+ :' = ': ' == '
29
+ :'!=': '==,\='
30
+ :' + ': ' - '
31
+ :' - ': ' + '
32
+ :'-': '_'
33
+ :'_': '-'
@@ -0,0 +1,3 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
3
+ :code2: '<pre><%=text1%></pre><br/><p>Elegir el número de línea donde está el primer error. Elegir 0 si no hay ningún error.</p>'
@@ -0,0 +1,6 @@
1
+ ---
2
+ - '[*]'
3
+ - ','
4
+ - ';'
5
+ - '('
6
+ - ')'
@@ -0,0 +1,11 @@
1
+ ---
2
+ :ALTER: 'MODIFICAR,ATLER,CREATE,DROP'
3
+ :CREATE: 'CREAR,CRETAE,DROP,ALTER'
4
+ :DROP: 'ELIMINAR,DORP,CREATE,ALTER'
5
+ :INTEGER: 'ENTERO,INTEGUER,VARCHAR'
6
+ :TABLE: 'TABLA,TALBE,INDEX,DATABASE'
7
+ :VARCHAR: 'TEXTO,VARHCAR'
8
+ :;: ':'
9
+ :);: ')'
10
+ :(: '[,{'
11
+ :): '],}'
@@ -0,0 +1,2 @@
1
+ ---
2
+ :code1: '<pre><%=text1%></pre><br/><p>Escribir el número de línea donde está el primer error. Escribir 0 si no hay ningún error.</p>'
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'directory_loader'
4
+ require_relative '../ai/concept_ai'
5
+ require_relative '../data/world'
4
6
  require_relative '../logger'
5
7
 
6
8
  # Load DATA defined into our Project
@@ -9,16 +11,31 @@ module InputLoader
9
11
  # Load input data from every input directory
10
12
  # @param inputdirs (Array)
11
13
  def self.load(inputdirs)
12
- output = { concepts: [], codes: [] }
14
+ data = { concepts: [], codes: [], world: nil, concepts_ai: [] }
13
15
  Logger.verbose "\n[INFO] Loading input data"
14
16
 
15
17
  # inputdirs = project.inputdirs.split(',')
16
18
  inputdirs.each do |dirname|
17
- data = DirectoryLoader.load(dirname)
18
- output[:concepts] += data[:concepts]
19
- output[:codes] += data[:codes]
19
+ temp = DirectoryLoader.load(dirname)
20
+ data[:concepts] += temp[:concepts]
21
+ data[:codes] += temp[:codes]
20
22
  end
23
+ create_questions(data)
24
+ end
21
25
 
22
- output
26
+ private_class_method def self.create_questions(data)
27
+ # Create World data
28
+ # * Calculate concept neighbours
29
+ # * TO-DO: Calculate code neighbours
30
+ data[:world] = World.new(data[:concepts])
31
+ # Create ConceptAI data and make concept questions
32
+ data[:concepts].each do |concept|
33
+ concept_ai = ConceptAI.new(concept, data[:world])
34
+ concept_ai.make_questions
35
+ data[:concepts_ai] << concept_ai
36
+ end
37
+ # Make code questions
38
+ data[:codes].each(&:make_questions)
39
+ data
23
40
  end
24
41
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'yaml'
4
4
  require_relative '../project'
5
+ require_relative '../logger'
5
6
 
6
7
  # Load params into Project class using arg input
7
8
  # * load
@@ -10,40 +11,48 @@ require_relative '../project'
10
11
  # * load_from_directory
11
12
  # * load_error
12
13
  module ProjectLoader
13
- def self.load(args = {})
14
+ ##
15
+ # Load project from args
16
+ # @param args (String or Hash)
17
+ def self.load(args)
14
18
  project = Project.instance
15
19
 
16
20
  if args.class == Hash
17
21
  project.param.merge!(args)
18
- return true
22
+ return project
19
23
  elsif args.class == String
20
24
  ProjectLoader.load_from_string(args)
21
- return true
25
+ return project
22
26
  end
23
27
 
24
28
  msg = '[ERROR] ProjectLoader:'
25
29
  msg += "Configuration params format is <#{pArgs.class}>!"
26
- project.verbose Rainbow(msg).red
30
+ Logger.verbose Rainbow(msg).red
27
31
  raise msg
28
32
  end
29
33
 
30
- def self.load_from_string(arg)
34
+ ##
35
+ # Load project from filepath. Options:
36
+ # * HAML filepath
37
+ # * XML filepath
38
+ # * YAML filepath
39
+ # @param filepath (String)
40
+ def self.load_from_string(filepath)
31
41
  project = Project.instance
32
- unless File.exist?(arg)
42
+ unless File.exist?(filepath)
33
43
  msg = Rainbow("[WARN] ProjectLoader.load: #{arg} dosn't exists!").yellow.bright
34
44
  project.verbose msg
35
45
  raise msg
36
46
  end
37
47
 
38
- if File.extname(arg) == '.haml' || File.extname(arg) == '.xml'
39
- project.set(:inputdirs, File.dirname(arg))
40
- project.set(:process_file, File.basename(arg))
41
- elsif File.extname(arg) == '.yaml'
42
- load_from_yaml(arg)
43
- elsif File.directory?(arg)
44
- load_from_directory(arg)
48
+ if File.extname(filepath) == '.haml' || File.extname(filepath) == '.xml'
49
+ project.set(:inputdirs, File.dirname(filepath))
50
+ project.set(:process_file, File.basename(filepath))
51
+ return project
52
+ elsif File.extname(filepath) == '.yaml'
53
+ return load_from_yaml(filepath)
45
54
  else
46
- load_error(arg)
55
+ load_error(filepath)
47
56
  end
48
57
  end
49
58
 
@@ -52,19 +61,11 @@ module ProjectLoader
52
61
  project.param.merge!(YAML.load(File.open(arg)))
53
62
  project.set(:configfilename, arg)
54
63
  project.set(:projectdir, File.dirname(arg))
55
- end
56
-
57
- def self.load_from_directory(dirpath)
58
- msg = Rainbow('[WARN] ProjectLoader.load: Directory input ').yellow
59
- msg += Rainbow(dirpath).bright.yellow
60
- msg += Rainbow(' not implemented!').yellow
61
- Project.instance.verbose msg
62
- exit 1
64
+ project
63
65
  end
64
66
 
65
67
  def self.load_error(arg)
66
- msg = Rainbow('[ERR ] ProjectLoader: Input ').red
67
- msg += Rainbow(arg).red.bright + Rainbow(' unkown').red
68
+ msg = Rainbow("[ERROR] ProjectLoader.Input unkown: #{arg}").red.bright
68
69
  Project.instance.verbose msg
69
70
  raise msg
70
71
  end
data/lib/asker/logger.rb CHANGED
@@ -9,8 +9,7 @@ module Logger
9
9
  def self.verbose(msg)
10
10
  project = Project.instance
11
11
  puts msg if project.get(:verbose)
12
- project.get(:logfile).write("#{msg}\n") if project.get(:logfile)
13
- # project.get(:logfile)&.project.get(:logfile).write("#{msg}\n")
12
+ project.get(:logfile)&.write("#{msg}\n")
14
13
  end
15
14
 
16
15
  ##
data/lib/asker/project.rb CHANGED
@@ -4,6 +4,7 @@ require 'singleton'
4
4
  require 'rainbow'
5
5
  require 'fileutils'
6
6
  require_relative 'application'
7
+ require_relative 'logger'
7
8
 
8
9
  # Contains Project data and methods
9
10
  class Project
@@ -105,6 +106,7 @@ class Project
105
106
  def verbose(msg)
106
107
  puts msg if get(:verbose)
107
108
  get(:logfile).write(msg.to_s + "\n") if get(:logfile)
109
+ raise "verbose"
108
110
  end
109
111
 
110
112
  ##
@@ -131,9 +133,9 @@ class Project
131
133
  f.write("Author : David Vargas Ruiz\n")
132
134
  f.write('=' * 50 + "\n\n")
133
135
 
134
- verbose '[INFO] Project open'
135
- verbose ' ├── inputdirs = ' + Rainbow(get(:inputdirs)).bright
136
- verbose ' └── process_file = ' + Rainbow(get(:process_file)).bright
136
+ Logger.verbose '[INFO] Project open'
137
+ Logger.verbose ' ├── inputdirs = ' + Rainbow(get(:inputdirs)).bright
138
+ Logger.verbose ' └── process_file = ' + Rainbow(get(:process_file)).bright
137
139
  end
138
140
 
139
141
  # Create or reset output file
@@ -10,26 +10,28 @@ require 'rainbow'
10
10
  # * create_dirs
11
11
  # * copyfile
12
12
  module Skeleton
13
+ ##
14
+ # Create skeleton for asker input files
15
+ # @param dirpath (String) Folder path to save example files
13
16
  def self.create(dirpath)
14
17
  puts "\n[INFO] Creating #{Rainbow(dirpath).bright} project skeleton"
15
18
  create_dir dirpath
16
19
  copy_files_into(dirpath)
17
20
  end
18
21
 
19
- def self.copy_files_into(project_dir)
20
- # Directory and files: Ruby script, Configfile, gitignore
21
- items = [
22
- { source: 'files/example-concept.haml', target: 'example-concept.haml' }
23
- # { source: 'files/example-code.haml', target: 'example-code.haml' },
24
- ]
25
- source_basedir = File.join(File.dirname(__FILE__))
26
- items.each do |item|
27
- source = File.join(source_basedir, item[:source])
28
- target = File.join(project_dir, item[:target])
29
- copyfile(source, target)
30
- end
22
+ ##
23
+ # Copy lib/asker/files into Folder
24
+ # @param dirpath (String)
25
+ def self.copy_files_into(dirpath)
26
+ # Directory and files: example-concept.haml
27
+ source = File.join(File.dirname(__FILE__), 'files/example-concept.haml')
28
+ target = File.join(dirpath, 'example-concept.haml')
29
+ copyfile(source, target)
31
30
  end
32
31
 
32
+ ##
33
+ # Create folder
34
+ # @param dirpath (String)
33
35
  def self.create_dir(dirpath)
34
36
  if Dir.exist? dirpath
35
37
  puts "* Exists dir! => #{Rainbow(dirpath).yellow}"
@@ -43,21 +45,20 @@ module Skeleton
43
45
  end
44
46
  end
45
47
 
46
- def self.create_dirs(*args)
47
- args.each { |arg| create_dir arg }
48
- end
49
-
48
+ ##
49
+ # Copy target file to dest
50
+ # @param target (String)
51
+ # @param dest (String)
50
52
  def self.copyfile(target, dest)
51
53
  if File.exist? dest
52
54
  puts "* Exists file! => #{Rainbow(dest).yellow}"
53
- else
54
- puts "* File not found! => #{Rainbow(target).yellow}" unless File.exist? target
55
- begin
56
- FileUtils.cp(target, dest)
57
- puts "* Create file => #{Rainbow(dest).green}"
58
- rescue StandardError
59
- puts "* Create file ERROR => #{Rainbow(dest).red}"
60
- end
55
+ return true
56
+ end
57
+ begin
58
+ FileUtils.cp(target, dest)
59
+ puts "* Create file => #{Rainbow(dest).green}"
60
+ rescue StandardError
61
+ puts "* Create file ERROR => #{Rainbow(dest).red}"
61
62
  end
62
63
  end
63
64
  end