artii 0.0.3 → 1.0.0

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