asciiart 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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