conjugatefr 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1ad90db94e0593104ac13b95934ca3dad75baad
4
- data.tar.gz: 4dee619f6237b8c630ae0842453edb700e5caa1c
3
+ metadata.gz: 87362c4221617c2625e90c78bda16876536213a7
4
+ data.tar.gz: 83c504e5139117a9ca1a7ca5c5ae7676ad4c14a6
5
5
  SHA512:
6
- metadata.gz: f5244c013d501d89cd5e2f94266d795b5188c7b361d361adb80cbf8951e6709faf32c33fb8e519c12a2d7989060b20d4529c87725f0ea76760fdd7fb0eca364a
7
- data.tar.gz: 55b6a637272e69fde927807252fe9d45213f094209f2dffe4e057a7c6931bc5b8dc31b5562847883392b2124fe6189af0c1c13a9b118bb1f8bff281afbb7d3de
6
+ metadata.gz: 271d9ea391997af2de123c736747babea7df9fbee0363bc7724ca2ead3a54fccd98d591517b359e25889c1efa22cf49a8748f7f8c51a2d19c8dd11f37afd6162
7
+ data.tar.gz: e6f2145bbcf1b1adb7064c769b576241f618efeab29298fa7d41c9c79e7b47bee07436cff142aca902bad4f2dc421fbcc6a5fa4d426efc75c5db71bf21f9c2ee
@@ -10,12 +10,10 @@ options = {
10
10
  "renderer" => "Human",
11
11
  }
12
12
 
13
- cfr = ConjugateFR.new
14
-
15
13
  OptionParser.new do |opts|
16
14
  opts.banner = "Usage: #{$0} [options] [verbs]"
17
15
  opts.program_name = "ConjugateFR"
18
- opts.version = "1.0.0"
16
+ opts.version = "1.0.1"
19
17
  opts.on "-R", "--require PATH", "Require PATH before running." do |path|
20
18
  require path
21
19
  end
@@ -51,5 +49,4 @@ unless renderer
51
49
  exit -1
52
50
  end
53
51
 
54
- cfr.setRenderer renderer
55
- cfr.go ARGV
52
+ conjugateFR ARGV, renderer
@@ -2,71 +2,77 @@ require 'open-uri'
2
2
  require 'nokogiri'
3
3
  require 'conjugatefr/renderers'
4
4
 
5
- class ConjugateFR
6
- def setRenderer (renderer)
7
- @renderer = renderer
8
- end
9
- def go (query)
10
- # cpwords - Copy/Pasted words list from the website.
11
- cpwords = "accroître acheter acquérir acquiescer
12
- alléger aller apercevoir appeler
13
- apprendre arguer arrêter asseoir
14
- astreindre avoir battre boire
15
- bouillir briller céder changer
16
- chanter circoncire commencer compléter
17
- conclure conduire confire confondre
18
- connaître construire coudre courir
19
- craindre créer croire croître
20
- cueillir défaillir déléguer dépecer
21
- devoir dire disséquer dissoudre
22
- distinguer distraire dormir écrire
23
- employer ennuyer enseigner entendre
24
- envoyer espérer essayer essuyer
25
- être faire falloir finir
26
- fuir geler grasseyer interdire
27
- interpeller jeter joindre lancer
28
- lever lire louer luire
29
- manger marquer maudire mener
30
- mentir mettre mordre moudre
31
- mouiller mourir mouvoir naître
32
- naviguer nettoyer nuire offrir
33
- oublier ouvrir pallier paraître
34
- partir payer peindre peler
35
- perdre peser plaire pleuvoir
36
- pourvoir pouvoir prendre prévoir
37
- prier promouvoir rapiécer recevoir
38
- régner remuer répandre répondre
39
- résoudre réveiller rire rompre
40
- savoir semer sentir servir
41
- signer sortir souffrir suffire
42
- suivre surseoir taire tenir
43
- tomber tordre traire travailler
44
- tressaillir vaincre valoir vendre
45
- venir vêtir vivre voir
46
- vouloir"
5
+ # Conjugates French Verbs
6
+ # @param query [Array] The query list. Can be null, in which presets are used.
7
+ # @param renderer [Renderer] The Renderer to use.
8
+ def conjugateFR (query, renderer)
9
+ # cpwords - Copy/Pasted words list from the website.
10
+ cpwords = "accroître acheter acquérir acquiescer
11
+ alléger aller apercevoir appeler
12
+ apprendre arguer arrêter asseoir
13
+ astreindre avoir battre boire
14
+ bouillir briller céder changer
15
+ chanter circoncire commencer compléter
16
+ conclure conduire confire confondre
17
+ connaître construire coudre courir
18
+ craindre créer croire croître
19
+ cueillir défaillir déléguer dépecer
20
+ devoir dire disséquer dissoudre
21
+ distinguer distraire dormir écrire
22
+ employer ennuyer enseigner entendre
23
+ envoyer espérer essayer essuyer
24
+ être faire falloir finir
25
+ fuir geler grasseyer interdire
26
+ interpeller jeter joindre lancer
27
+ lever lire louer luire
28
+ manger marquer maudire mener
29
+ mentir mettre mordre moudre
30
+ mouiller mourir mouvoir naître
31
+ naviguer nettoyer nuire offrir
32
+ oublier ouvrir pallier paraître
33
+ partir payer peindre peler
34
+ perdre peser plaire pleuvoir
35
+ pourvoir pouvoir prendre prévoir
36
+ prier promouvoir rapiécer recevoir
37
+ régner remuer répandre répondre
38
+ résoudre réveiller rire rompre
39
+ savoir semer sentir servir
40
+ signer sortir souffrir suffire
41
+ suivre surseoir taire tenir
42
+ tomber tordre traire travailler
43
+ tressaillir vaincre valoir vendre
44
+ venir vêtir vivre voir
45
+ vouloir"
47
46
 
48
- # Generate word arrays from above list.
49
- words = cpwords.gsub(/[ \t\n]+/, " ").split " "
47
+ # Generate word arrays from above list.
48
+ words = cpwords.gsub(/[ \t\n]+/, " ").split " "
50
49
 
51
- toqry = if query.empty?
52
- words
53
- else
54
- query
55
- end
50
+ # Fall back to presets
51
+ toqry = if query.empty?
52
+ words
53
+ else
54
+ query
55
+ end
56
56
 
57
- toqry_filtered = toqry.map { |word| word.gsub(/[êé]/, "e").gsub /î/, "i" }
57
+ # Filter out all of the accented words.
58
+ toqry_filtered = toqry.map { |word| word.gsub(/[êé]/, "e").gsub /î/, "i" }
58
59
 
59
- @renderer.pre
60
+ # Render pre-word content.
61
+ renderer.pre
60
62
 
61
- toqry_filtered.each_with_index do |word, index|
62
- open "http://conjf.cactus2000.de/showverb.en.php?verb=#{word}" do |page|
63
- doc = Nokogiri::HTML page
64
- arr = doc.css("td [width='50%']").css("div").to_s.gsub(/.*?<div>/im, "").split("<br>")
65
- arr.pop
66
- @renderer.word toqry[index], arr
67
- end
68
- end
63
+ # Query each word.
64
+ toqry_filtered.each_with_index do |word, index|
65
+ open "http://conjf.cactus2000.de/showverb.en.php?verb=#{word}" do |page|
66
+ # Split the conjugations into an array.
67
+ doc = Nokogiri::HTML page
68
+ arr = doc.css("td [width='50%']").css("div").to_s.gsub(/.*?<div>/im, "").split("<br>")
69
+ arr.pop
69
70
 
70
- @renderer.post
71
+ # Render this word.
72
+ renderer.word toqry[index], arr
73
+ end
71
74
  end
75
+
76
+ # Render post-word content.
77
+ renderer.post
72
78
  end
@@ -1,13 +1,29 @@
1
1
  # Ruby ConjugateFR Renderers - Part of Ruby ConjugateFR.
2
2
  # I, htmlguy, hereby release this work into the public domain.
3
3
 
4
+ # Renders conjugated french verbs.
5
+ # (see conjugateFR)
4
6
  class Renderer
7
+ # Prints content to go before the conjugations.
5
8
  def pre; end
9
+ # Prints a verb and it's conjugations.
10
+ # @param name [String] The verb.
11
+ # @param words [Array] An array of conjugations.
6
12
  def word (name, words); end
13
+ # Prints content to go after the conjugations.
7
14
  def post; end
15
+ # The description of this renderer.
16
+ # For example: +Renders in the example format.+
17
+ # @return [String] the description.
8
18
  def description; ""; end
9
19
  end
10
20
 
21
+ # A renderer in a human-readable format.
22
+ # Output looks like:
23
+ # == someverb ==
24
+ # someconjugation
25
+ # someconjugation
26
+ # etc...
11
27
  class HumanRenderer < Renderer
12
28
  def word (name, words)
13
29
  puts "\n == #{name} == "
@@ -18,6 +34,9 @@ class HumanRenderer < Renderer
18
34
  def description; "Renders in a nice, human-readable format."; end
19
35
  end
20
36
 
37
+ # A renderer template for rendering in a delimitered table format.
38
+ # (see CSVRenderer)
39
+ # (see TSVRenderer)
21
40
  class DelimitedTableRenderer < Renderer
22
41
  def initialize; @s = ""; end
23
42
  def pre
@@ -32,16 +51,29 @@ class DelimitedTableRenderer < Renderer
32
51
  end
33
52
  end
34
53
 
54
+ # A renderer in the comma-separated value format.
55
+ # Output looks like:
56
+ # Word,Je,Tu,Il/Elle/On,Nous,Vous,Ils/Elles
57
+ # someverb,conj1,conj2,conj3,conj4,conj5,conj6
35
58
  class CSVRenderer < DelimitedTableRenderer
36
59
  def initialize; @s = ","; end
37
60
  def description; "Renders in the Comma Separated Value (CSV) format."; end
38
61
  end
39
62
 
63
+ # A renderer in the tab-separated value format.
64
+ # Output looks like (w/ 4-space tab):
65
+ # Word Je Tu Il/Elle/On Nous Vous Ils/Elles
66
+ # someverb conj1 conj2 conj3 conj4 conj5 conj6
40
67
  class TSVRenderer < DelimitedTableRenderer
41
68
  def initialize; @s = "\t"; end
42
69
  def description; "Renders in the Tab Separated Value (TSV) format."; end
43
70
  end
44
71
 
72
+ # A renderer in the markdown table syntax.
73
+ # Output looks like:
74
+ # |Word|Je|Tu|Il/Elle/On|Nous|Vous|Ils/Elles
75
+ # |---|---|---|---|---|---|---
76
+ # |someverb|conj1|conj2|conj3|conj4|conj5|conj6
45
77
  class MDTableRenderer < Renderer
46
78
  def pre
47
79
  puts "|Word|Je|Tu|Il/Elle/On|Nous|Vous|Ils/Elles"
@@ -57,6 +89,7 @@ class MDTableRenderer < Renderer
57
89
  def description; "Renders in Markdown's table syntax."; end
58
90
  end
59
91
 
92
+ # Renders verbs in the form of a count of how many there are.
60
93
  class CounterRenderer < Renderer
61
94
  def initialize; @count = 0; end
62
95
  def word (name, words)
@@ -68,6 +101,9 @@ class CounterRenderer < Renderer
68
101
  def description; "Renders out a count of how many words are listed."; end
69
102
  end
70
103
 
104
+ # A global list of renderers, with each one assigned to it's human-readable
105
+ # name.
106
+ # Used for programs like the CLI.
71
107
  $renderers = {
72
108
  "Human" => HumanRenderer.new,
73
109
  "CSV" => CSVRenderer.new,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjugatefr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - htmlguy
@@ -10,7 +10,23 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A simple program to conjugate french verbs.
13
+ description: "\n A simple program and library to conjugate french verbs.\n Parses
14
+ responses to requests to an online reference site.\n\n == Executable\n ConjugateFR
15
+ comes with the executable binary +conjugatefr+.\n To view information about it's
16
+ supported arguments, run\n conjugatefr --help\n\n == Custom Renderers\n To make
17
+ a custom renderer, just type\n require conjugatefr/renderer\n and then make a
18
+ class that extends +Renderer+.\n An example is as follows:\n\n require 'conjugatefr/renderer'\n
19
+ \ class ExampleRenderer < Renderer\n def pre\n puts \"This goes before
20
+ the words.\"\n end\n def word (name, words)\n print \"#{name}:\"\n
21
+ \ words.each do |word|\n print \" #{word}\"\n end\n end\n
22
+ \ def post\n puts \"This goes after the words.\"\n end\n def
23
+ description; \"Renders an example format.\"; end\n end\n # Add to the Renderers
24
+ list (For CLI and other programs that use it.)\n $renderers[\"Example\"] = ExampleRenderer.new\n
25
+ \ To try this out, save it as +erend.rb+ and then run:\n conjugatefr -R ./erend.rb
26
+ -r Example\n It will produce the output:\n This goes before the words.\n someword:
27
+ someconjugation etc etc\n ... (more words will be here)\n This goes after
28
+ the words.\n\n == The Library\n The library can be included with +require conjugatefr+.
29
+ It includes the\n +ConjugateFR+ class.\n "
14
30
  email: htmlguy@pdum.xyz
15
31
  executables:
16
32
  - conjugatefr