artii 0.0.3 → 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.
@@ -23,4 +23,10 @@
23
23
 
24
24
  === 0.0.3 / 2010-08-27
25
25
 
26
- * No functional changes.
26
+ * No functional changes.
27
+
28
+ === 1.0.0 / 2010-08-28
29
+
30
+ * Available Fonts are generated from the included font files
31
+ * Available Fonts are stored as a hash, and now fully listed when called with -l or --list
32
+ * A few other minor tweaks
@@ -40,16 +40,17 @@ None (yet)
40
40
 
41
41
  == TODO
42
42
 
43
- - Ability to load non *.flf files (fonts are available, but the script assumes a .flf extension)
43
+ - Ability to load non *.flf files (fonts are available, .flc file-types seem to be an issue right now)
44
44
  - Ability to set custom configurations, so you don't have to constantly set the options (like font) unless you want to
45
45
  - Some nice built-in utilities (to make for easier demoing)
46
- - Font list should be stored as a hash, and not a string
47
46
  - Font list should show samples of the faces in addition to the names
48
47
  - Font list should be able to show a given range (fonts starting with specific letters, or a range of letters)
49
48
  - Font list should be searchable (a la grep)
50
- - Font list needs to be generated from a) included fonts and b) a user-specified location (see To Do about custom configurations)
49
+ - Font list needs to be generated from <strike>a) included fonts</strike> and b) a user-specified location (see To Do about custom configurations)
51
50
 
52
- = Note on Figlet
51
+ = Prior Art
52
+
53
+ == Figlet
53
54
 
54
55
  Figlet (http://www.figlet.org) implementation written by Tim Fletcher
55
56
  (twoggle@gmail.com). Found originally in the text gem
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 1.0.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{artii}
8
- s.version = "0.0.3"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mike Tierney"]
12
- s.date = %q{2010-08-27}
12
+ s.date = %q{2010-08-28}
13
13
  s.default_executable = %q{artii}
14
14
  s.description = %q{A Figlet-based ASCII art generator, useful for command-line based ASCII Art Generation.}
15
15
  s.email = %q{mike@panpainter.com}
@@ -707,7 +707,7 @@ Gem::Specification.new do |s|
707
707
  s.homepage = %q{http://github.com/panpainter/artii}
708
708
  s.rdoc_options = ["--charset=UTF-8"]
709
709
  s.require_paths = ["lib"]
710
- s.rubygems_version = %q{1.3.6}
710
+ s.rubygems_version = %q{1.3.7}
711
711
  s.summary = %q{A little Figlet-based ASCII art generator.}
712
712
  s.test_files = [
713
713
  "spec/artii/base_spec.rb",
@@ -720,7 +720,7 @@ Gem::Specification.new do |s|
720
720
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
721
721
  s.specification_version = 3
722
722
 
723
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
723
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
724
724
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
725
725
  else
726
726
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
@@ -1,3 +1,17 @@
1
+ # This gem takes a string and outputs ASCII art, generated by the
2
+ # FIGLET library. While it defaults to the 'big' font, an optional
3
+ # flag can be passed (-f or --font) with a string following it
4
+ # (e.g., slant) that will change the font that is used.
5
+ #
6
+ # The ruby Figlet implementation was written by Tim Fletcher
7
+ # (twoggle@gmail.com), and will only be curosrily maintained
8
+ # by the author of this rubygem (Michael Tierney,
9
+ # dev@panpainter.com).
10
+ #
11
+ # Author:: Michael Tierney (mailto:dev@panpainter.com)
12
+ # Copyright:: Copyright (c) 2010 Michael Tierney
13
+ # License:: Distributed under the MIT License
14
+
1
15
  require 'rubygems'
2
16
 
3
17
  $: << File.dirname(__FILE__)
@@ -1,3 +1,4 @@
1
+ require 'find'
1
2
  require 'optparse'
2
3
 
3
4
  module Artii
@@ -8,16 +9,17 @@ module Artii
8
9
  def initialize(*args)
9
10
  @options = {}
10
11
  @output = ''
12
+ @faces = all_fonts
11
13
 
12
14
  OptionParser.new do |opts|
13
15
  opts.banner = "Usage: artii 'your string here' [-f FONT_NAME or --font FONT_NAME] [-l or --list]"
14
16
 
15
17
  opts.on('-f', '--font FONT_NAME', 'Specify the font to be used (defaults to "big")') do |font|
16
- @options[:font] = font
18
+ @font_name = @faces[font]
17
19
  end
18
20
 
19
21
  opts.on('-l', '--list', 'Prints the list of available fonts') do |list|
20
- @options[:list] = list
22
+ @options[:list] = list_all_fonts
21
23
  end
22
24
 
23
25
  opts.on_tail("-h", "--help", "Show this message") do
@@ -32,12 +34,12 @@ module Artii
32
34
  end.parse!(args)
33
35
 
34
36
  if @options[:list]
35
- @output = "Currently available faces:\n - Big\n - Chunky\n - Slant"
37
+ @output = list_all_fonts
36
38
  end
37
39
 
38
- @font_name = @options[:font] ? @options[:font] : 'big'
40
+ @font_name = @font_name.nil? ? @faces['big'] : @font_name
39
41
 
40
- @font = Artii::Figlet::Font.new("#{FONTPATH}/#{@font_name}.flf")
42
+ @font = Artii::Figlet::Font.new("#{FONTPATH}/#{@font_name}")
41
43
 
42
44
  asciify args.first unless args.empty?
43
45
  end
@@ -46,5 +48,38 @@ module Artii
46
48
  figlet = Artii::Figlet::Typesetter.new(@font)
47
49
  @output = figlet[string]
48
50
  end
51
+
52
+ def list_all_fonts
53
+ font_list = "\n--------------------\nAll Available Fonts:\n--------------------\n\n"
54
+ @faces.sort.each do |k,v|
55
+ font_list += "#{k}\n"
56
+ end
57
+ font_list += "\n--------------------------\nTotal Available Fonts: #{@faces.size}\n\n"
58
+ end
59
+
60
+ def all_fonts
61
+ font_faces = {}
62
+ size_of_fontpath = FONTPATH.split('/').size
63
+ font_exts = %w(flf) # FIXME: was %w(flf flc) but the .flc format seems to not be recognized. Need to investigate further.
64
+
65
+ Find.find(FONTPATH) do |file|
66
+ ext = File.extname(file).gsub('.','')
67
+ next if (File.directory?(file) or !font_exts.include?(ext))
68
+
69
+ dir = File.dirname(file).split('/')
70
+ if dir.size > size_of_fontpath
71
+ dir = "#{dir.last}/"
72
+ else
73
+ dir = ''
74
+ end
75
+
76
+ filename = File.basename(file)
77
+ filename = "#{dir}#{filename}"
78
+
79
+ font_faces[File.basename(file, ".#{ext}")] = filename
80
+ end
81
+
82
+ font_faces
83
+ end
49
84
  end
50
85
  end
@@ -9,37 +9,43 @@ describe Artii::Base do
9
9
  end
10
10
  end
11
11
 
12
- it "should default to 'big'" do
12
+ it "font_name should default to 'big.flf'" do
13
13
  a = Artii::Base.new 'test'
14
- a.font_name.should == 'big'
14
+ a.font_name.should == 'big.flf'
15
15
  end
16
16
 
17
17
  describe "font switching" do
18
18
  context 'should set font if passed -f ' do
19
- before do
20
- @a = Artii::Base.new 'test', '-f', 'chunky'
19
+ it "should set @font_name" do
20
+ a = Artii::Base.new 'test', '-f', 'chunky'
21
+ a.instance_variable_get(:@font_name).should == 'chunky.flf'
21
22
  end
22
23
 
23
- it "set @options[:font]" do
24
- @a.instance_variable_get(:@options)[:font].should == 'chunky'
24
+ xit "should accept non-flf file formats" do
25
+ a = Artii::Base.new 'test', '-f', 'frango'
26
+ a.font_name.should == 'frango.flc'
25
27
  end
26
28
 
27
- it "should have @options[:font] and @font_name be the same" do
28
- @a.font_name.should == @a.instance_variable_get(:@options)[:font]
29
+ it "should accept fonts in nested directories" do
30
+ a = Artii::Base.new 'test', '-f', 'cour'
31
+ a.font_name.should == 'bdffonts/cour.flf'
29
32
  end
30
33
  end
31
34
 
32
35
  context 'should set font if passed --font' do
33
- before do
34
- @a = Artii::Base.new 'test', '--font', 'chunky'
36
+ it "set @font_name" do
37
+ a = Artii::Base.new 'test', '--font', 'chunky'
38
+ a.instance_variable_get(:@font_name).should == 'chunky.flf'
35
39
  end
36
40
 
37
- it "set @options[:font]" do
38
- @a.instance_variable_get(:@options)[:font].should == 'chunky'
41
+ it "should accept fonts in nested directories" do
42
+ a = Artii::Base.new 'test', '--f', 'cour'
43
+ a.font_name.should == 'bdffonts/cour.flf'
39
44
  end
40
45
 
41
- it "should have @options[:font] and @font_name be the same" do
42
- @a.font_name.should == @a.instance_variable_get(:@options)[:font]
46
+ xit "should accept non-flf file formats" do
47
+ a = Artii::Base.new 'test', '--font', 'frango'
48
+ a.font_name.should == 'frango.flc'
43
49
  end
44
50
  end
45
51
  end
@@ -49,18 +55,19 @@ describe Artii::Base do
49
55
  it "should list all fonts if passed -l" do
50
56
  a = Artii::Base.new '-l'
51
57
  a.output.should_not be_empty
52
- a.output.should include 'Big'
53
- a.output.should include 'Chunky'
54
- a.output.should include 'Slant'
55
-
58
+ a.output.should include 'big'
59
+ a.output.should include 'chunky'
60
+ a.output.should include 'slant'
61
+ a.output.should include 'helv'
56
62
  end
57
63
 
58
64
  it "should list all fonts if passed --list" do
59
65
  a = Artii::Base.new '--list'
60
66
  a.output.should_not be_empty
61
- a.output.should include 'Big'
62
- a.output.should include 'Chunky'
63
- a.output.should include 'Slant'
67
+ a.output.should include 'big'
68
+ a.output.should include 'chunky'
69
+ a.output.should include 'slant'
70
+ a.output.should include 'helv'
64
71
  end
65
72
  end
66
73
 
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artii
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease: false
5
6
  segments:
7
+ - 1
6
8
  - 0
7
9
  - 0
8
- - 3
9
- version: 0.0.3
10
+ version: 1.0.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Mike Tierney
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-08-27 00:00:00 -07:00
18
+ date: 2010-08-28 00:00:00 -07:00
18
19
  default_executable: artii
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: rspec
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 13
27
30
  segments:
28
31
  - 1
29
32
  - 2
@@ -735,23 +738,27 @@ rdoc_options:
735
738
  require_paths:
736
739
  - lib
737
740
  required_ruby_version: !ruby/object:Gem::Requirement
741
+ none: false
738
742
  requirements:
739
743
  - - ">="
740
744
  - !ruby/object:Gem::Version
745
+ hash: 3
741
746
  segments:
742
747
  - 0
743
748
  version: "0"
744
749
  required_rubygems_version: !ruby/object:Gem::Requirement
750
+ none: false
745
751
  requirements:
746
752
  - - ">="
747
753
  - !ruby/object:Gem::Version
754
+ hash: 3
748
755
  segments:
749
756
  - 0
750
757
  version: "0"
751
758
  requirements: []
752
759
 
753
760
  rubyforge_project:
754
- rubygems_version: 1.3.6
761
+ rubygems_version: 1.3.7
755
762
  signing_key:
756
763
  specification_version: 3
757
764
  summary: A little Figlet-based ASCII art generator.