asciiart 0.0.3 → 0.0.4

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/README.md CHANGED
@@ -35,6 +35,102 @@ Or install it yourself as:
35
35
  puts a.to_ascii_art
36
36
  => ...untold glory follows
37
37
 
38
+ _or_
39
+
40
+ require 'asciiart'
41
+ a = AsciiArt.new("https://f.cloud.github.com/assets/54012/36827/2081922c-5377-11e2-9e39-3fafca0cdb79.png")
42
+ => #<AsciiArt:0x007fa889cbacf8 @data="...">
43
+ puts a.to_ascii_art
44
+ +----------------------------------------------------------------------------------------------------+
45
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
46
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
47
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
48
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
49
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
50
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
51
+ |ooooooooooooooooooooooooooooooooooooooo++oo+++++++o+o+oooooooooooooooooooooooooooooooooooooooooooooo|
52
+ |ooooooooooooooooooooooooooooooooo++++++++::::::::::+:+++++++oooooooooooooooooooooooooooooooooooooooo|
53
+ |oooooooooooooooooooooooooooo+++::~~~......... . ........~~~::+++oooooooooooooooooooooooooooooooooooo|
54
+ |ooooooooooooooooooooooooo++++:~~. .~~:++++ooooooooooooooooooooooooooooooooo|
55
+ |ooooooooooooooooooooooo++:~~. ....~~~~~~~~~~~.... .~~:+++oooooooooooooooooooooooooooooo|
56
+ |oooooooooooooooooooo+++:~ .~~:::+++++o+++++++::~~.. .~:++ooooooooooooooooooooooooooooo|
57
+ |oooooooooooooooooo++::~. .~~:::+++o+oooooooooo+++++:::~~.. .~::++oooooooooooooooooooooooooo|
58
+ |ooooooooooooooooo++:~. .~+++oooooooooooooooooooooooooo++:~. .~:++ooooooooooooooooooooooooo|
59
+ |ooooooooooooooo++:~.. .~~:+++oooooooooooooooooooooooooo+++:~~. ..~:+oooooooooooooooooooooooo|
60
+ |ooooooooooooooo+:~. .~:+++::+++++ooooooo+ooooooooooo++++::++::~. ..:++oooooooooooooooooooooo|
61
+ |ooooooooooooo+++~. .~::+++:~~~~~~:::::::::~~~::::::::~~.~.~::++:~~. ~:+oooooooooooooooooooooo|
62
+ |ooooooooooo+++:~. ~::++++:. ... ... .~~::++::~. .~:++oooooooooooooooooooo|
63
+ |oooooooooooo+:~.. ..:++o+++:. .~:+++++:. ..~:++ooooooooooooooooooo|
64
+ |ooooooooooo+::.. ..:++ooo+:~. .~:+ooo++~~. ...~:+ooooooooooooooooooo|
65
+ |ooooooooooo+:~. ...~:+ooo++:~. ..~:++oo+:~.. ..:+ooooooooooooooooooo|
66
+ |oooooooooo++~. . .~:++o++:~~. ..~++o++:~.. .:+ooooooooooooooooooo|
67
+ |ooooooooooo:~. .~::+oo++~~ ~:+o+++:. .~++oooooooooooooooooo|
68
+ |oooooooooo++:. .~::++o+:~. .~++oo++:~. .:+o+ooooooooooooooooo|
69
+ |ooooooooooo:~. ...::+oo+:~. ~:+oo++:~. .:+++ooooooooooooooooo|
70
+ |oooooooooo++:. .~:+++o+:~ .~++o++:~~ .~+ooooooooooooooooooo|
71
+ |ooooooooooo+~. .~~:+ooo+~. .~:+o+++~~. .~+ooooooooooooooooooo|
72
+ |ooooooooooo:~.. .~:+++++~~. .~+o+o+:~. .:++oooooooooooooooooo|
73
+ |ooooooooooo+~.. ..~:++o+::.. .~:+oo++:~. ~:+ooooooooooooooooooo|
74
+ |ooooooooooo++~... .~++oo+::~. ~~++o++:~. ..~:+ooooooooooooooooooo|
75
+ |ooooooooooo++:~. .:+++o++:~. ..~:+++oo+~. ..~:+oooooooooooooooooooo|
76
+ |oooooooooooo++::. ..~:++oo++::~~~. ...~~::+++o++:~~ ..~:+++ooooooooooooooooooo|
77
+ |ooooooooooooo+++~. ..::+oo+o++++:~. .~::+++oo++++:~. .:++o+oooooooooooooooooooo|
78
+ |ooooooooooooooo+:~. .~:++ooooo++:~. .~:+o+oooo++:~.. .~:++oooooooooooooooooooooo|
79
+ |ooooooooooooooo++::~. .~~:++ooooo+:. .:++oooo++:~~. ..~:+oooooooooooooooooooooooo|
80
+ |ooooooooooooooooo++::. .~~::+++:~. .~++o+::~~.. .~:++ooooooooooooooooooooooooo|
81
+ |ooooooooooooooooooo++:.. .~::::~. .~:::~~.. .~:++ooooooooooooooooooooooooooo|
82
+ |oooooooooooooooooooo+++:~~.. .... .... ..~~:++oooooooooooooooooooooooooooo|
83
+ |ooooooooooooooooooooooo+++:~~. ..~:++oooooooooooooooooooooooooooooooo|
84
+ |ooooooooooooooooooooooooo+++:~~~.... ...~~::++++oooooooooooooooooooooooooooooooo|
85
+ |ooooooooooooooooooooooooooooo+++++::~~.... . .....~~:::+++oooooooooooooooooooooooooooooooooooooo|
86
+ |ooooooooooooooooooooooooooooooooo+++++::::~:~:~::~:::::++++ooooooooooooooooooooooooooooooooooooooooo|
87
+ |ooooooooooooooooooooooooooooooooooooo+oo+oo+o++o+oo+oooooooooooooooooooooooooooooooooooooooooooooooo|
88
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
89
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
90
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
91
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
92
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
93
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
94
+ |oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo|
95
+ +----------------------------------------------------------------------------------------------------+
96
+ => nil
97
+
98
+ _or make it thinner_
99
+
100
+ require 'asciiart'
101
+ a = AsciiArt.new("https://f.cloud.github.com/assets/54012/36827/2081922c-5377-11e2-9e39-3fafca0cdb79.png")
102
+ => #<AsciiArt:0x007fa889cbacf8 @data="...">
103
+
104
+
105
+ print a.to_ascii_art(width: 50)
106
+ +--------------------------------------------------+
107
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
108
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
109
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
110
+ |oooooooooooooooooo===++++====ooooooooooooooooooooo|
111
+ |ooooooooooooo=+:~.~........~~~:+=ooooooooooooooooo|
112
+ |oooooooooo==:~...~~:++++++:~~..~~:+=oooooooooooooo|
113
+ |oooooooo=+:...~++====oooo====+:~..~:+=oooooooooooo|
114
+ |ooooooo=+~..~:++==ooooooooooo=++:~..~+=ooooooooooo|
115
+ |oooooo=+~.~:+=+~.~~~~~~~~:~~~.~:++:~.~+=oooooooooo|
116
+ |ooooo=+~~.+===~................~+==:.~~+=ooooooooo|
117
+ |ooooo=:~~:+=+:~................~~+=+:~.:=ooooooooo|
118
+ |ooooo=~.~+==+~...................+==+~.:=ooooooooo|
119
+ |ooooo=~~~+==:~...................:==+~.:=ooooooooo|
120
+ |ooooo=~~~:==+~..................~+==+~.~=ooooooooo|
121
+ |ooooo=:~~~+=++~.................:+=+~~~:=ooooooooo|
122
+ |ooooo=+:..~+==+~~...........~~~+==+~..:+=ooooooooo|
123
+ |ooooooo+:..~:+=o=+:........:+====:~.~:==oooooooooo|
124
+ |oooooooo=+~.~~:+==+~......~+==+:~..~:+oooooooooooo|
125
+ |ooooooooo=+:~..~~:~~.......~:~~..~:+oooooooooooooo|
126
+ |oooooooooooo=+~~..............~:+=oooooooooooooooo|
127
+ |ooooooooooooooo==++:~~~~~~:++==ooooooooooooooooooo|
128
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
129
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
130
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
131
+ |oooooooooooooooooooooooooooooooooooooooooooooooooo|
132
+ +--------------------------------------------------+
133
+
38
134
  ### In The Command Line
39
135
 
40
136
  Local Files
@@ -42,9 +138,18 @@ Local Files
42
138
  $ asciiart ~/Desktop/uncle_larry.jpg
43
139
 
44
140
  Remote Images
45
-
141
+
46
142
  $ asciiart http://www.google.com/images/srpr/logo3w.png
47
143
 
144
+ Get Help
145
+
146
+ $ asciiart -h
147
+
148
+ Usage: asciiart [options] <path_or_url>
149
+ -w, --width WIDTH Width of the finished Ascii Art (Default: 100)
150
+ -v, --version Show AsciiArt version
151
+ -h, --help Show this message
152
+
48
153
  ## Contributing
49
154
 
50
155
  1. Fork it
@@ -1,9 +1,38 @@
1
1
  #!/usr/bin/env ruby
2
+
2
3
  require 'asciiart'
4
+ require 'optparse'
5
+
6
+ options = {}
7
+ opt_parser = OptionParser.new do |opts|
8
+ opts.banner = 'Usage: asciiart [options] <path_or_url>'
9
+
10
+ opts.on('-w', '--width WIDTH', 'Width of the finished Ascii Art (Default: 100)') do |width|
11
+ options[:width] = width.to_i
12
+ end
13
+
14
+ opts.on_tail('-v', '--version', 'Show AsciiArt version') do
15
+ puts 'AsciiArt version ' + AsciiArt::VERSION
16
+ exit
17
+ end
18
+
19
+ opts.on_tail("-h", "--help", "Show this message") do
20
+ puts opts
21
+ exit
22
+ end
23
+ end
3
24
 
4
- if ARGV[0].nil?
5
- puts "Specify a path or URL to convert\n"
25
+ begin
26
+ opt_parser.parse!
27
+ rescue OptionParser::MissingArgument => e
28
+ puts "ERROR: #{e.message.capitalize}\n#{opt_parser}"
6
29
  exit
7
- else
8
- puts AsciiArt.new(ARGV[0]).to_ascii_art
9
- end
30
+ end
31
+
32
+ if ARGV.length == 0
33
+ puts "ERROR: You must specify a path or URL to convert\n#{opt_parser}"
34
+ exit
35
+ end
36
+
37
+ puts AsciiArt.new(ARGV[0]).to_ascii_art(options)
38
+
@@ -7,46 +7,48 @@ class AsciiArt
7
7
 
8
8
  attr_writer :image_chars
9
9
 
10
- def initialize(path_to_file)
10
+ def initialize(path_to_file)
11
11
  # open-uri open will fallback to IO open
12
- open(path_to_file) { |file| @data = file.read }
12
+ open(path_to_file) { |file| @data = file.read }
13
13
  self
14
14
  end
15
15
 
16
- def to_ascii_art
16
+ def to_ascii_art(options = {})
17
+ options = { width: 100 }.merge(options)
18
+
17
19
  img = Magick::Image.from_blob(@data).first
18
20
 
19
- new_width = 100
20
- scale = (new_width.to_f / img.columns)
21
- new_height = ((img.rows * scale) / 2).to_i
21
+ width = options[:width]
22
+ scale = (width.to_f / img.columns)
23
+ height = ((img.rows * scale) / 2).to_i
22
24
 
23
- img.resize!(new_width, new_height)
25
+ img.resize!(width, height)
24
26
 
25
27
  img = img.quantize(image_chars.length, Magick::GRAYColorspace)
26
28
  img = img.normalize
27
29
 
28
30
  quantum_calc = Magick::QuantumRange / Magick::QuantumPixel.to_i
29
-
30
- output = ""
31
-
32
- border = '+' + ('-' * new_width) + '+' + "\n"
33
- output << border
34
-
35
- img.view(0, 0, new_width, new_height) do |view|
36
- new_height.times do |i|
37
- output << '|'
38
- new_width.times { |j| output << image_chars[view[i][j].red/quantum_calc] }
39
- output << "|\n"
40
- end
31
+
32
+ border = "+#{'-' * width}+\n"
33
+ output = border.dup
34
+
35
+ img.view(0, 0, width, height) do |view|
36
+ height.times do |i|
37
+ output << '|'
38
+ width.times { |j| output << image_chars[view[i][j].red/quantum_calc] }
39
+ output << "|\n"
40
+ end
41
41
  end
42
-
43
- output << border
44
42
 
45
- output
43
+ output + border
46
44
  end
47
45
 
48
46
  def image_chars
49
- @image_chars ||= [" ", ".", "~", ":", "+", "=", "o", "*", "x", "^", "%", "#", "@", "$", "M", "W"]
47
+ @image_chars ||= ' .~:+=o*x^%#@$MW'.chars.to_a
50
48
  end
51
49
 
50
+ def inspect
51
+ "#<#{self.class.to_s}>"
52
+ end
52
53
  end
54
+
@@ -1,3 +1,3 @@
1
1
  class AsciiArt
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciiart
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-01-24 00:00:00.000000000 Z
13
+ date: 2013-01-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rmagick
17
- requirement: &70275816255180 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70275816255180
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: pry
28
- requirement: &70275816254720 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ! '>='
@@ -33,7 +38,12 @@ dependencies:
33
38
  version: '0'
34
39
  type: :development
35
40
  prerelease: false
36
- version_requirements: *70275816254720
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
37
47
  description:
38
48
  email:
39
49
  - stephen@eastmedia.com
@@ -71,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
81
  version: '0'
72
82
  requirements: []
73
83
  rubyforge_project:
74
- rubygems_version: 1.8.10
84
+ rubygems_version: 1.8.24
75
85
  signing_key:
76
86
  specification_version: 3
77
87
  summary: A command line tool to turn images into ASCII art