rae 1.1.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Koldo Oteo
1
+ Copyright (c) 2009 David A. Cuadrado
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -9,9 +9,10 @@ Description goes here.
9
9
  * Add tests for it. This is important so I don't break it in a
10
10
  future version unintentionally.
11
11
  * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
12
+ (if you want to have your own version, that is fine but
13
+ bump version in a commit by itself I can ignore when I pull)
13
14
  * Send me a pull request. Bonus points for topic branches.
14
15
 
15
16
  == Copyright
16
17
 
17
- Copyright (c) 2010 Koldo Oteo. See LICENSE for details.
18
+ Copyright (c) 2009 David A. Cuadrado. See LICENSE for details.
data/Rakefile CHANGED
@@ -5,15 +5,12 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "rae"
8
- gem.summary = %Q{CLI to access the rae.es}
9
- gem.description = %Q{CLI to access the rae.es}
10
- gem.email = "koldo.oteo1@gmail.com"
11
- gem.homepage = "http://github.com/koteo/rae"
12
- gem.authors = ["Koldo Oteo"]
13
- gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
-
15
- gem.add_dependency('mechanize', '>= 0.9.3')
16
- gem.add_dependency('nokogiri', '>= 1.3.3')
8
+ gem.summary = %Q{library to access the rae.es}
9
+ gem.description = %Q{library to access the rae.es}
10
+ gem.email = "krawek@gmail.com"
11
+ gem.homepage = "http://github.com/dcu/rae"
12
+ gem.authors = ["David A. Cuadrado", "Koldo Oteo"]
13
+ gem.add_dependency "mechanize", ">= 1.0.0"
17
14
  end
18
15
  Jeweler::GemcutterTasks.new
19
16
  rescue LoadError
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.5.0
data/bin/rae CHANGED
@@ -1,81 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
- #
4
- #=======================================================================================
5
- #
6
- # FILE: rae.rb
7
- #
8
- #
9
- # DESCRIPTION: Libreríde acceso a la drae (diccionario de la real academia españ)
10
- # desde ruby
11
- #
12
- # OPTIONS: [palabra]
13
- # REQUIREMENTS: nokogiri, mechanize
14
- # AUTHOR: Koldo Oteo (), koldo.oteo1@gmail.com
15
- # WEB: http://koteo.lacoctelera.net
16
- # VERSION: 1.1.2
17
- # CREATED: 10/03/2010
18
- # AGRADECIMIENTOS: A krawek de freenode.
19
- #=======================================================================================
20
- require 'rubygems'
21
- require 'nokogiri'
22
- require 'mechanize'
23
2
 
3
+ $:.unshift File.dirname(__FILE__)+"/../lib"
4
+ require 'rae'
24
5
 
25
- class Rae
6
+ definitions = Rae.new.search(ARGV.first)
26
7
 
27
- def pide_pal
28
- @pal = ARGV.first
29
- if !@pal
30
- puts "Programa para acceder al diccionario de la rae desde ruby."
31
- puts
32
- puts "Uso: rae [palabra]"
33
- puts "La palabra se debe escribir con acentos y con exactitud, para buscar en la rae sin problemas."
34
- puts
35
- puts "Reportar bugs a <koldo.oteo1@gmail.com>."
36
- puts
37
- exit
38
- end
39
- end
40
-
41
- def asig_proxy
42
- if ENV['http_proxy'] != nil then
43
- #ENV['http_proxy'].scan(/(^http|https) \:\/\/ (\d+.\d+.\d+.\d+|\w+.|\w+.\.\w+) \: (\d.+)/xi)
44
- @host, @port = ENV['http_proxy'].to_s.sub(%r{^\w+://}, "").split(":", 2)
45
- end
46
- end
47
-
48
- def accede_form
49
- @agent = Mechanize.new
50
-
51
- asig_proxy
52
- if @host != nil
53
- @agent.set_proxy("#{@host}", "#{@port}")
54
- end
55
-
56
- @agent.user_agent_alias = 'Mac Safari'
57
- @page = @agent.get 'http://buscon.rae.es/draeI/html/cabecera.htm'
58
-
59
- @form = @page.forms.first
60
- @form['TIPO_BUS'] = '3'
61
- @form['LEMA'] = @pal
62
-
63
- @page = @agent.submit(@form, @form.buttons.first)
64
-
65
- end
66
-
67
- def format
68
- @read_doc = Nokogiri::HTML(@page.body)
69
- @read_doc.css('p').each do |l|
70
- puts l.content.to_s.strip
71
- end
72
- end
8
+ definitions.each_with_index do |definition, index|
9
+ puts "#{index+1}. #{definition}"
73
10
  end
74
-
75
-
76
- ra = Rae.new
77
-
78
- ra.pide_pal
79
- ra.accede_form
80
- ra.format
81
-
data/lib/rae.rb CHANGED
@@ -0,0 +1,63 @@
1
+ require 'mechanize'
2
+
3
+ if RUBY_VERSION < '1.9'
4
+ $KCODE = 'u'
5
+ end
6
+
7
+ class Rae
8
+ def initialize
9
+ end
10
+
11
+ def search(word, bus = 3)
12
+ agent = Mechanize.new
13
+ agent.user_agent_alias = 'Mac Safari'
14
+ page = agent.get 'http://buscon.rae.es/draeI/html/cabecera.htm'
15
+
16
+ form = page.forms.first
17
+
18
+ form['TIPO_BUS'] = bus
19
+ form['LEMA'] = word
20
+
21
+ page = agent.submit(form, form.buttons.first)
22
+
23
+ parse_page(page, word)
24
+ end
25
+
26
+ protected
27
+ def parse_page(page, word)
28
+ definitions = []
29
+ subdefinition = nil
30
+ page.parser.css('p').each_with_index do |l, index|
31
+ if l.content.to_s.strip =~ /La palabra #{Regexp.escape(word)} no/
32
+ links = page.links_with(:href => /\?LEMA\=/)
33
+ if link = links.first
34
+ word = link.text.strip
35
+ page = link.click
36
+ return parse_page(page, word)
37
+ end
38
+ else
39
+ definition, subdefinition = parse_definition(l, subdefinition, word)
40
+ definitions << definition if definition
41
+ end
42
+ end
43
+
44
+ definitions
45
+ end
46
+
47
+ def parse_definition(l, subdefinition, word)
48
+ definition = l.content.to_s.strip
49
+ if definition =~ /\d+\.\s+(.+)/
50
+ definition = $1
51
+ if subdefinition
52
+ definition = "#{subdefinition} -> #{definition}"
53
+ end
54
+ elsif definition =~ /\~/
55
+ subdefinition = definition.sub("~", word).strip
56
+ definition = nil
57
+ else
58
+ definition = nil
59
+ end
60
+
61
+ [definition, subdefinition]
62
+ end
63
+ end
data/rae.gemspec ADDED
@@ -0,0 +1,51 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{rae}
8
+ s.version = "1.5.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["David A. Cuadrado", "Koldo Oteo"]
12
+ s.date = %q{2010-08-21}
13
+ s.default_executable = %q{rae}
14
+ s.description = %q{library to access the rae.es}
15
+ s.email = %q{krawek@gmail.com}
16
+ s.executables = ["rae"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".gitignore",
24
+ "LICENSE",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/rae",
29
+ "lib/rae.rb",
30
+ "rae.gemspec"
31
+ ]
32
+ s.homepage = %q{http://github.com/dcu/rae}
33
+ s.rdoc_options = ["--charset=UTF-8"]
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = %q{1.3.7}
36
+ s.summary = %q{library to access the rae.es}
37
+
38
+ if s.respond_to? :specification_version then
39
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
40
+ s.specification_version = 3
41
+
42
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
+ s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
44
+ else
45
+ s.add_dependency(%q<mechanize>, [">= 1.0.0"])
46
+ end
47
+ else
48
+ s.add_dependency(%q<mechanize>, [">= 1.0.0"])
49
+ end
50
+ end
51
+
metadata CHANGED
@@ -1,64 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rae
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 3
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
- - 1
8
- - 2
9
- version: 1.1.2
8
+ - 5
9
+ - 0
10
+ version: 1.5.0
10
11
  platform: ruby
11
12
  authors:
13
+ - David A. Cuadrado
12
14
  - Koldo Oteo
13
15
  autorequire:
14
16
  bindir: bin
15
17
  cert_chain: []
16
18
 
17
- date: 2010-03-12 00:00:00 +01:00
19
+ date: 2010-08-21 00:00:00 -05:00
18
20
  default_executable: rae
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
- name: thoughtbot-shoulda
23
+ name: mechanize
22
24
  prerelease: false
23
25
  requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
28
  - - ">="
26
29
  - !ruby/object:Gem::Version
30
+ hash: 23
27
31
  segments:
32
+ - 1
28
33
  - 0
29
- version: "0"
30
- type: :development
31
- version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- name: mechanize
34
- prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- segments:
40
34
  - 0
41
- - 9
42
- - 3
43
- version: 0.9.3
35
+ version: 1.0.0
44
36
  type: :runtime
45
- version_requirements: *id002
46
- - !ruby/object:Gem::Dependency
47
- name: nokogiri
48
- prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- segments:
54
- - 1
55
- - 3
56
- - 3
57
- version: 1.3.3
58
- type: :runtime
59
- version_requirements: *id003
60
- description: CLI to access the rae.es
61
- email: koldo.oteo1@gmail.com
37
+ version_requirements: *id001
38
+ description: library to access the rae.es
39
+ email: krawek@gmail.com
62
40
  executables:
63
41
  - rae
64
42
  extensions: []
@@ -72,11 +50,12 @@ files:
72
50
  - LICENSE
73
51
  - README.rdoc
74
52
  - Rakefile
53
+ - VERSION
54
+ - bin/rae
75
55
  - lib/rae.rb
76
- - test/helper.rb
77
- - test/test_rae.rb
56
+ - rae.gemspec
78
57
  has_rdoc: true
79
- homepage: http://github.com/koteo/rae
58
+ homepage: http://github.com/dcu/rae
80
59
  licenses: []
81
60
 
82
61
  post_install_message:
@@ -85,26 +64,29 @@ rdoc_options:
85
64
  require_paths:
86
65
  - lib
87
66
  required_ruby_version: !ruby/object:Gem::Requirement
67
+ none: false
88
68
  requirements:
89
69
  - - ">="
90
70
  - !ruby/object:Gem::Version
71
+ hash: 3
91
72
  segments:
92
73
  - 0
93
74
  version: "0"
94
75
  required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
95
77
  requirements:
96
78
  - - ">="
97
79
  - !ruby/object:Gem::Version
80
+ hash: 3
98
81
  segments:
99
82
  - 0
100
83
  version: "0"
101
84
  requirements: []
102
85
 
103
86
  rubyforge_project:
104
- rubygems_version: 1.3.6
87
+ rubygems_version: 1.3.7
105
88
  signing_key:
106
89
  specification_version: 3
107
- summary: CLI to access the rae.es
108
- test_files:
109
- - test/helper.rb
110
- - test/test_rae.rb
90
+ summary: library to access the rae.es
91
+ test_files: []
92
+
data/test/helper.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require 'rae'
8
-
9
- class Test::Unit::TestCase
10
- end
data/test/test_rae.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestRae < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end