conjugatefr 1.0.0
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.
- checksums.yaml +7 -0
- data/bin/conjugatefr +55 -0
- data/lib/conjugatefr.rb +72 -0
- data/lib/conjugatefr/renderers.rb +77 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a1ad90db94e0593104ac13b95934ca3dad75baad
|
4
|
+
data.tar.gz: 4dee619f6237b8c630ae0842453edb700e5caa1c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f5244c013d501d89cd5e2f94266d795b5188c7b361d361adb80cbf8951e6709faf32c33fb8e519c12a2d7989060b20d4529c87725f0ea76760fdd7fb0eca364a
|
7
|
+
data.tar.gz: 55b6a637272e69fde927807252fe9d45213f094209f2dffe4e057a7c6931bc5b8dc31b5562847883392b2124fe6189af0c1c13a9b118bb1f8bff281afbb7d3de
|
data/bin/conjugatefr
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Ruby ConjugateFR - Prints french verb conjugations.
|
3
|
+
# I, htmlguy, hereby release this work into the public domain.
|
4
|
+
|
5
|
+
require 'optparse'
|
6
|
+
require 'conjugatefr'
|
7
|
+
require 'conjugatefr/renderers'
|
8
|
+
|
9
|
+
options = {
|
10
|
+
"renderer" => "Human",
|
11
|
+
}
|
12
|
+
|
13
|
+
cfr = ConjugateFR.new
|
14
|
+
|
15
|
+
OptionParser.new do |opts|
|
16
|
+
opts.banner = "Usage: #{$0} [options] [verbs]"
|
17
|
+
opts.program_name = "ConjugateFR"
|
18
|
+
opts.version = "1.0.0"
|
19
|
+
opts.on "-R", "--require PATH", "Require PATH before running." do |path|
|
20
|
+
require path
|
21
|
+
end
|
22
|
+
opts.on "-r", "--renderer RENDERER",
|
23
|
+
"Choose the renderer to render the output. (Default: Human)" do |renderer|
|
24
|
+
options["renderer"] = renderer
|
25
|
+
end
|
26
|
+
opts.on "-l", "--list-renderers", "List the renderers that you can use." do
|
27
|
+
$renderers.each do |renderer|
|
28
|
+
puts " - #{renderer[0]} - #{renderer[1].description}"
|
29
|
+
end
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
opts.on "-v", "--list-verbs", "List the verbs that are preloaded." do
|
33
|
+
words.each do |word| print "#{word} "; end
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
opts.on "-h", "--help", "Print the help menu." do
|
37
|
+
puts opts
|
38
|
+
exit
|
39
|
+
end
|
40
|
+
opts.on "-v", "--version", "Print version information" do
|
41
|
+
puts opts.ver
|
42
|
+
exit
|
43
|
+
end
|
44
|
+
end.parse!
|
45
|
+
|
46
|
+
puts "Loading Renderer" if options["verbose"]
|
47
|
+
rname = options["renderer"]
|
48
|
+
renderer = $renderers[rname]
|
49
|
+
unless renderer
|
50
|
+
puts "Invalid Renderer: #{rname}."
|
51
|
+
exit -1
|
52
|
+
end
|
53
|
+
|
54
|
+
cfr.setRenderer renderer
|
55
|
+
cfr.go ARGV
|
data/lib/conjugatefr.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'conjugatefr/renderers'
|
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"
|
47
|
+
|
48
|
+
# Generate word arrays from above list.
|
49
|
+
words = cpwords.gsub(/[ \t\n]+/, " ").split " "
|
50
|
+
|
51
|
+
toqry = if query.empty?
|
52
|
+
words
|
53
|
+
else
|
54
|
+
query
|
55
|
+
end
|
56
|
+
|
57
|
+
toqry_filtered = toqry.map { |word| word.gsub(/[êé]/, "e").gsub /î/, "i" }
|
58
|
+
|
59
|
+
@renderer.pre
|
60
|
+
|
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
|
69
|
+
|
70
|
+
@renderer.post
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# Ruby ConjugateFR Renderers - Part of Ruby ConjugateFR.
|
2
|
+
# I, htmlguy, hereby release this work into the public domain.
|
3
|
+
|
4
|
+
class Renderer
|
5
|
+
def pre; end
|
6
|
+
def word (name, words); end
|
7
|
+
def post; end
|
8
|
+
def description; ""; end
|
9
|
+
end
|
10
|
+
|
11
|
+
class HumanRenderer < Renderer
|
12
|
+
def word (name, words)
|
13
|
+
puts "\n == #{name} == "
|
14
|
+
words.each do |val|
|
15
|
+
puts val
|
16
|
+
end
|
17
|
+
end
|
18
|
+
def description; "Renders in a nice, human-readable format."; end
|
19
|
+
end
|
20
|
+
|
21
|
+
class DelimitedTableRenderer < Renderer
|
22
|
+
def initialize; @s = ""; end
|
23
|
+
def pre
|
24
|
+
puts "Word#{@s}Je#{@s}Tu#{@s}Il/Elle/On#{@s}Nous#{@s}Vous#{@s}Ils/Elles"
|
25
|
+
end
|
26
|
+
def word (name, words)
|
27
|
+
print "#{name}"
|
28
|
+
words.each do |word|
|
29
|
+
print "#{@s}#{word}"
|
30
|
+
end
|
31
|
+
puts
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class CSVRenderer < DelimitedTableRenderer
|
36
|
+
def initialize; @s = ","; end
|
37
|
+
def description; "Renders in the Comma Separated Value (CSV) format."; end
|
38
|
+
end
|
39
|
+
|
40
|
+
class TSVRenderer < DelimitedTableRenderer
|
41
|
+
def initialize; @s = "\t"; end
|
42
|
+
def description; "Renders in the Tab Separated Value (TSV) format."; end
|
43
|
+
end
|
44
|
+
|
45
|
+
class MDTableRenderer < Renderer
|
46
|
+
def pre
|
47
|
+
puts "|Word|Je|Tu|Il/Elle/On|Nous|Vous|Ils/Elles"
|
48
|
+
puts "|---|---|---|---|---|---|---"
|
49
|
+
end
|
50
|
+
def word (name, words)
|
51
|
+
print "|#{name}"
|
52
|
+
words.each do |word|
|
53
|
+
print "|#{word}"
|
54
|
+
end
|
55
|
+
puts
|
56
|
+
end
|
57
|
+
def description; "Renders in Markdown's table syntax."; end
|
58
|
+
end
|
59
|
+
|
60
|
+
class CounterRenderer < Renderer
|
61
|
+
def initialize; @count = 0; end
|
62
|
+
def word (name, words)
|
63
|
+
@count += 1
|
64
|
+
end
|
65
|
+
def post
|
66
|
+
puts @count
|
67
|
+
end
|
68
|
+
def description; "Renders out a count of how many words are listed."; end
|
69
|
+
end
|
70
|
+
|
71
|
+
$renderers = {
|
72
|
+
"Human" => HumanRenderer.new,
|
73
|
+
"CSV" => CSVRenderer.new,
|
74
|
+
"TSV" => TSVRenderer.new,
|
75
|
+
"MDTable" => MDTableRenderer.new,
|
76
|
+
"Counter" => CounterRenderer.new
|
77
|
+
}
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: conjugatefr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- htmlguy
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-16 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A simple program to conjugate french verbs.
|
14
|
+
email: htmlguy@pdum.xyz
|
15
|
+
executables:
|
16
|
+
- conjugatefr
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- bin/conjugatefr
|
21
|
+
- lib/conjugatefr.rb
|
22
|
+
- lib/conjugatefr/renderers.rb
|
23
|
+
homepage: http://rubygems.org/gems/conjugatefr
|
24
|
+
licenses:
|
25
|
+
- Unlicense
|
26
|
+
metadata: {}
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 2.2.3
|
44
|
+
signing_key:
|
45
|
+
specification_version: 4
|
46
|
+
summary: ConjugateFR French Conjugation
|
47
|
+
test_files: []
|