clispell 0.2.2 → 0.3.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.
data/Rakefile CHANGED
@@ -18,6 +18,7 @@ Jeweler::Tasks.new do |gem|
18
18
  gem.add_dependency 'dmarkow-raspell'
19
19
  gem.add_dependency 'mattscilipoti-rdialog'
20
20
  gem.add_dependency 'oald_parser'
21
+ gem.add_dependency 'clipboard'
21
22
  gem.executables = ['clispell']
22
23
  gem.homepage = "http://github.com/ip2k/clispell"
23
24
  gem.license = "Creative Commons by-nc-sa"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
@@ -1,12 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
+ # ---- REQUIRED GEMS ----
2
3
  require 'raspell'
3
4
  require 'mattscilipoti-rdialog'
4
5
  require 'oald_parser'
5
6
 
7
+ # ---- FLAGS AND GLOBAL VARS ----
8
+
9
+ # set this to true if we want to automatically copy the...
10
+ # ...correctly spelled word to the clipboard.
11
+ # NOTE: Requires the 'xclip' binary on Linux.
12
+ $enable_copy_to_clipboard = true
13
+
14
+ # ---- INIT LOGIC ----
15
+
16
+ # if we're enabling the clipboard functionality, require the 'clipboard' gem.
17
+ if $enable_copy_to_clipboard
18
+ require 'clipboard'
19
+ # if we're running on Linux, make sure that 'xclip' is available...
20
+ # ...and quit if it isn't since clipboard won't work without it.
21
+ if RUBY_PLATFORM.include?("linux")
22
+ xclip = `which xclip`.strip
23
+ if xclip.empty?
24
+ abort("You need the 'xclip' binary for copy-to-clipboard functionality to work properly under Linux")
25
+ end
26
+ end
27
+ end
28
+
29
+
30
+ # ---- METHODS ----
31
+
6
32
  # helper method for instantiating our ASpell API...
7
33
  # using this, you only have to configure it in one spot.
8
34
  def new_speller()
9
- # instantiate our speller and set the dict to en_US (English - United States) and ignore cAsE.
35
+ # instantiate our speller and set the dict to en_US...
36
+ # ...(English - United States) and ignore cAsE.
10
37
  speller = Aspell.new("en_US")
11
38
  speller.set_option("ignore-case", "true")
12
39
  return speller
@@ -15,7 +42,8 @@ end
15
42
  # helper method for instantiating our dialog API...
16
43
  # using this, you only have to configure it in one spot.
17
44
  def new_dialog()
18
- # instantiate our dialog and set some options
45
+ # instantiate our dialog and set some options...
46
+ # ...then return it as an object
19
47
  dialog = RDialog.new
20
48
  dialog.nocancel = true
21
49
  dialog.shadow = false
@@ -24,11 +52,14 @@ end
24
52
 
25
53
  # look up a word in the Oxford Advanced Learners Dictionary
26
54
  def define_word(someword)
55
+ # use the Facade interface from the oald_parser gem...
56
+ # ...which does the scraping / parsing for us.
57
+ puts "Waiting for the definition of #{someword} (requires internet access)..."
27
58
  facade = OaldParser::Facade.create_configured_instance
28
59
  return facade.describe(str: someword)
29
60
  end
30
61
 
31
- # our method to see if a word is spelled correctly
62
+ # check the spelling of a word and return boolean.
32
63
  def check_spelling(someword)
33
64
  myspeller = new_speller()
34
65
  # test [someword] for spelling error and return true if it's correct.
@@ -39,22 +70,37 @@ def check_spelling(someword)
39
70
  end
40
71
  end
41
72
 
73
+ # copy [something] to the clipboard (works on OSX/Linux/Win)...
74
+ # ...if we have the flag set to enable that.
75
+ def copy_to_clipboard(something)
76
+ if $enable_copy_to_clipboard
77
+ Clipboard.copy(something)
78
+ puts "Copied #{something} to the clipboard."
79
+ end
80
+ end
81
+
82
+ # get an array of possible corrections.
42
83
  def get_suggestions(someword)
43
84
  myspeller = new_speller()
44
85
  return myspeller.suggest(someword)
45
86
  end
46
87
 
88
+ # show a dialog menu with all the possible corrections
47
89
  def show_suggestion_array(orig_word,suggestions)
48
90
  # use our new_dialog helper method and call the menu() method on it...
49
91
  # ...with our fancy text and suggestions array, then...
50
92
  # ...block until the user picks something and return what they picked.
51
- return new_dialog.menu("#{orig_word} not found or spelled incorrectly. Select a word below view the definition.", suggestions)
93
+ return new_dialog.menu("#{orig_word} not found or spelled incorrectly.\nSelect a word below view the definition.", suggestions)
52
94
  end
53
95
 
96
+ # show a dialog box with the definition.
54
97
  def show_definition(definition)
55
98
  return new_dialog.msgbox(definition)
56
99
  end
57
100
 
101
+
102
+ # ---- MAIN ----
103
+
58
104
  # if the user didn't pass any args, abort and let them know that they need to.
59
105
  if ARGV.first.nil?
60
106
  abort("You must specify a word that you want to spell check or define")
@@ -62,9 +108,14 @@ else
62
108
  # if the user spelled the word right, just show the definition...
63
109
  # and tell them they were right while we're waiting on the API.
64
110
  if check_spelling(ARGV.first)
65
- puts "#{ARGV.first} is spelled correctly, waiting for the definition (requires internet access)..."
111
+
112
+ # if we're copying stuff to the clipboard, copy the correct spelling.
113
+ copy_to_clipboard(ARGV.first)
114
+ puts "#{ARGV.first} is spelled correctly."
115
+
116
+ # get and display the definition, then end.
66
117
  definition = define_word(ARGV.first)
67
- show_definition("#{ARGV.first}:\n#{definition}")
118
+ show_definition("#{ARGV.first} is spelled correctly.\n\n#{ARGV.first}:\n#{definition}")
68
119
  exit(0)
69
120
  else
70
121
  # get possible words if the user sends us a typo'd word.
@@ -76,6 +127,11 @@ else
76
127
 
77
128
  # call our show_suggestion_array method with the array-of-arrays.
78
129
  user_selection_string = show_suggestion_array(ARGV.first, suggestions_array)
130
+
131
+ # if we're copying stuff to the clipboard, copy what the user picks.
132
+ copy_to_clipboard(user_selection_string)
133
+
134
+ # get and display the definition of the word the user picks, then end.
79
135
  definition = define_word(user_selection_string)
80
136
  show_definition("#{user_selection_string}:\n#{definition}")
81
137
  exit(0)
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{clispell}
8
- s.version = "0.2.2"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ip2k"]
12
- s.date = %q{2011-07-31}
12
+ s.date = %q{2011-08-01}
13
13
  s.default_executable = %q{clispell}
14
14
  s.description = %q{clispell provides an easy-to-use CLI that harnesses ASpell the Oxford Advanced Learner's Dictionary and delivers pretty word info FAST right to your terminal}
15
15
  s.email = %q{github@seanp2k.endjunk.com}
@@ -27,7 +27,8 @@ Gem::Specification.new do |s|
27
27
  "Rakefile",
28
28
  "VERSION",
29
29
  "bin/clispell",
30
- "clispell.gemspec"
30
+ "clispell.gemspec",
31
+ "lib/clipboard_example.rb"
31
32
  ]
32
33
  s.homepage = %q{http://github.com/ip2k/clispell}
33
34
  s.licenses = ["Creative Commons by-nc-sa"]
@@ -46,6 +47,7 @@ Gem::Specification.new do |s|
46
47
  s.add_runtime_dependency(%q<dmarkow-raspell>, [">= 0"])
47
48
  s.add_runtime_dependency(%q<mattscilipoti-rdialog>, [">= 0"])
48
49
  s.add_runtime_dependency(%q<oald_parser>, [">= 0"])
50
+ s.add_runtime_dependency(%q<clipboard>, [">= 0"])
49
51
  else
50
52
  s.add_dependency(%q<shoulda>, [">= 0"])
51
53
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -54,6 +56,7 @@ Gem::Specification.new do |s|
54
56
  s.add_dependency(%q<dmarkow-raspell>, [">= 0"])
55
57
  s.add_dependency(%q<mattscilipoti-rdialog>, [">= 0"])
56
58
  s.add_dependency(%q<oald_parser>, [">= 0"])
59
+ s.add_dependency(%q<clipboard>, [">= 0"])
57
60
  end
58
61
  else
59
62
  s.add_dependency(%q<shoulda>, [">= 0"])
@@ -63,6 +66,7 @@ Gem::Specification.new do |s|
63
66
  s.add_dependency(%q<dmarkow-raspell>, [">= 0"])
64
67
  s.add_dependency(%q<mattscilipoti-rdialog>, [">= 0"])
65
68
  s.add_dependency(%q<oald_parser>, [">= 0"])
69
+ s.add_dependency(%q<clipboard>, [">= 0"])
66
70
  end
67
71
  end
68
72
 
@@ -0,0 +1,18 @@
1
+ # set this to true if we want to automatically copy the...
2
+ # ...correctly spelled word to the clipboard.
3
+ # NOTE: Requires the 'xclip' binary on Linux.
4
+ enable_copy_to_clipboard = true
5
+
6
+ if enable_copy_to_clipboard
7
+ require 'clipboard'
8
+ # if we're running on Linux, make sure that 'xclip' is available...
9
+ # ...and quit if it isn't since clipboard won't work without it.
10
+ if RUBY_PLATFORM.include?("linux")
11
+ xclip = `which xclip`.strip
12
+ if xclip.empty?
13
+ abort("You need the 'xclip' binary for copy-to-clipboard functionality to work properly under Linux")
14
+ end
15
+ end
16
+ Clipboard.copy("test123")
17
+ puts Clipboard.paste
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clispell
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-31 00:00:00.000000000 -04:00
12
+ date: 2011-08-01 00:00:00.000000000 -04:00
13
13
  default_executable: clispell
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &75982320 !ruby/object:Gem::Requirement
17
+ requirement: &80047820 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *75982320
25
+ version_requirements: *80047820
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &75982080 !ruby/object:Gem::Requirement
28
+ requirement: &80047580 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *75982080
36
+ version_requirements: *80047580
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: jeweler
39
- requirement: &75981840 !ruby/object:Gem::Requirement
39
+ requirement: &80047340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.6.4
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *75981840
47
+ version_requirements: *80047340
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rcov
50
- requirement: &75981600 !ruby/object:Gem::Requirement
50
+ requirement: &80047100 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *75981600
58
+ version_requirements: *80047100
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: dmarkow-raspell
61
- requirement: &75981360 !ruby/object:Gem::Requirement
61
+ requirement: &80046860 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *75981360
69
+ version_requirements: *80046860
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: mattscilipoti-rdialog
72
- requirement: &75981120 !ruby/object:Gem::Requirement
72
+ requirement: &80046620 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *75981120
80
+ version_requirements: *80046620
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: oald_parser
83
- requirement: &75980880 !ruby/object:Gem::Requirement
83
+ requirement: &80046380 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,7 +88,18 @@ dependencies:
88
88
  version: '0'
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *75980880
91
+ version_requirements: *80046380
92
+ - !ruby/object:Gem::Dependency
93
+ name: clipboard
94
+ requirement: &80046140 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: *80046140
92
103
  description: clispell provides an easy-to-use CLI that harnesses ASpell the Oxford
93
104
  Advanced Learner's Dictionary and delivers pretty word info FAST right to your terminal
94
105
  email: github@seanp2k.endjunk.com
@@ -108,6 +119,7 @@ files:
108
119
  - VERSION
109
120
  - bin/clispell
110
121
  - clispell.gemspec
122
+ - lib/clipboard_example.rb
111
123
  has_rdoc: true
112
124
  homepage: http://github.com/ip2k/clispell
113
125
  licenses:
@@ -124,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
124
136
  version: '0'
125
137
  segments:
126
138
  - 0
127
- hash: 346098287
139
+ hash: -777866863
128
140
  required_rubygems_version: !ruby/object:Gem::Requirement
129
141
  none: false
130
142
  requirements: