rasskey 0.0.2
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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.md +90 -0
- data/Rakefile +2 -0
- data/lib/rasskey/box.rb +45 -0
- data/lib/rasskey/extensions/string.rb +18 -0
- data/lib/rasskey/version.rb +3 -0
- data/lib/rasskey.rb +2 -0
- data/rasskey.gemspec +21 -0
- metadata +76 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# RassKey: R(uby) ASCII library
|
2
|
+
|
3
|
+
RassKey provides a few simple ASCII helpers for Ruby. Since this is the first release, the current functionality is fairly limited:
|
4
|
+
|
5
|
+
* RassKey::Box
|
6
|
+
* String.to\_box helper
|
7
|
+
|
8
|
+
## RassKey::Box
|
9
|
+
|
10
|
+
RassKey::Box is a pretty basic ASCII box creator. It was designed to draw a box around a string. The primary use case was simple ASCII Visio-style charts.
|
11
|
+
|
12
|
+
Currently RassKey accepts two options describing the box:
|
13
|
+
|
14
|
+
* padding
|
15
|
+
* glyph
|
16
|
+
|
17
|
+
These can either be set via an options hash passed to the _draw_ method or as setters:
|
18
|
+
|
19
|
+
>> require 'rasskey'
|
20
|
+
=> true
|
21
|
+
>> mybox = RassKey::Box.new :padding => 10, :glyph => "#"
|
22
|
+
=> #<RassKey::Box:0x7eff41e181f0 @padding=10, @glyph="#">
|
23
|
+
>> puts mybox.draw("This is a sample text")
|
24
|
+
###########################################
|
25
|
+
# #
|
26
|
+
# #
|
27
|
+
# #
|
28
|
+
# #
|
29
|
+
# #
|
30
|
+
# This is a sample text #
|
31
|
+
# #
|
32
|
+
# #
|
33
|
+
# #
|
34
|
+
# #
|
35
|
+
# #
|
36
|
+
###########################################
|
37
|
+
>> mybox.padding = 5
|
38
|
+
=> 5
|
39
|
+
>> mybox.glyph = "*"
|
40
|
+
=> "*"
|
41
|
+
>> puts mybox.draw("This is a sample text again")
|
42
|
+
***************************************
|
43
|
+
* *
|
44
|
+
* *
|
45
|
+
* This is a sample text again *
|
46
|
+
* *
|
47
|
+
* *
|
48
|
+
***************************************
|
49
|
+
|
50
|
+
## String.to\_box
|
51
|
+
|
52
|
+
You can also use it as a String method:
|
53
|
+
|
54
|
+
>> require 'rasskey'
|
55
|
+
=> true
|
56
|
+
>> mystr = "foobarbaz"
|
57
|
+
=> "foobarbaz"
|
58
|
+
>> puts mystr.to_box
|
59
|
+
*************
|
60
|
+
* foobarbaz *
|
61
|
+
*************
|
62
|
+
=> nil
|
63
|
+
>> puts mystr.to_box :padding => 12, :glyph => "%"
|
64
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
65
|
+
% %
|
66
|
+
% %
|
67
|
+
% %
|
68
|
+
% %
|
69
|
+
% %
|
70
|
+
% %
|
71
|
+
% foobarbaz %
|
72
|
+
% %
|
73
|
+
% %
|
74
|
+
% %
|
75
|
+
% %
|
76
|
+
% %
|
77
|
+
% %
|
78
|
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
79
|
+
|
80
|
+
# TODO
|
81
|
+
|
82
|
+
* Tests
|
83
|
+
* Get attr\_accessors working for String helper
|
84
|
+
* Get LICENSE headers and rdoc in place
|
85
|
+
* Work on allowing multi-char glyphs
|
86
|
+
* Word-wrapping for text
|
87
|
+
* Other "shapes"
|
88
|
+
* Custom elements (like say captions)
|
89
|
+
* Draw links between shapes
|
90
|
+
* Some type of canvas and auto-positioning
|
data/Rakefile
ADDED
data/lib/rasskey/box.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module RassKey
|
2
|
+
class Box
|
3
|
+
class << self
|
4
|
+
attr_accessor :default_padding
|
5
|
+
attr_accessor :default_glyph
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
@default_padding = 1
|
10
|
+
@default_glyph = '*'
|
11
|
+
|
12
|
+
attr_accessor :padding
|
13
|
+
attr_accessor :glyph
|
14
|
+
|
15
|
+
def initialize(options = {})
|
16
|
+
options = {
|
17
|
+
:padding => RassKey::Box.default_padding,
|
18
|
+
:glyph => RassKey::Box.default_glyph
|
19
|
+
}.merge(options)
|
20
|
+
|
21
|
+
self.padding = options[:padding]
|
22
|
+
self.glyph = options[:glyph]
|
23
|
+
|
24
|
+
super()
|
25
|
+
end
|
26
|
+
|
27
|
+
def draw(data)
|
28
|
+
@glyph.length == 1 ? (@glyph = @glyph) : (@glyph = @glyph[0,1])
|
29
|
+
whitespace = " " * ( data.length + (@padding * 2) )
|
30
|
+
spacing = " " * @padding || " "
|
31
|
+
content_line = "#{@glyph}#{spacing}#{data}#{spacing}#{@glyph}"
|
32
|
+
top = @glyph * content_line.length
|
33
|
+
side = @glyph
|
34
|
+
bottom = @glyph * content_line.length
|
35
|
+
box = []
|
36
|
+
box << top
|
37
|
+
(@padding/2).times { box << "#{@glyph}#{whitespace}#{@glyph}" }
|
38
|
+
box << "#{content_line}"
|
39
|
+
(@padding/2).times { box << "#{@glyph}#{whitespace}#{@glyph}" }
|
40
|
+
box << bottom
|
41
|
+
box.join("\n")
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RassKey #:nodoc:
|
2
|
+
module String #:nodoc:
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
attr_accessor :padding
|
6
|
+
attr_accessor :glyph
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_box(options = {})
|
11
|
+
RassKey::Box.new(options).draw(self)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
::String.class_eval do
|
17
|
+
include RassKey::String
|
18
|
+
end
|
data/lib/rasskey.rb
ADDED
data/rasskey.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "rasskey/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "rasskey"
|
7
|
+
s.version = Rasskey::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["lusis"]
|
10
|
+
s.email = ["lusis.org+rubygems.org@gmail.com"]
|
11
|
+
s.homepage = "http://github.com/lusis/rasskey"
|
12
|
+
s.summary = %q{Small Ruby Library for ASCII drawing}
|
13
|
+
s.description = %q{Small Ruby Library for ASCII drawing}
|
14
|
+
|
15
|
+
s.rubyforge_project = "rasskey"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rasskey
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- lusis
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-11-27 00:00:00 -05:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: Small Ruby Library for ASCII drawing
|
23
|
+
email:
|
24
|
+
- lusis.org+rubygems.org@gmail.com
|
25
|
+
executables: []
|
26
|
+
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files: []
|
30
|
+
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- Gemfile
|
34
|
+
- README.md
|
35
|
+
- Rakefile
|
36
|
+
- lib/rasskey.rb
|
37
|
+
- lib/rasskey/box.rb
|
38
|
+
- lib/rasskey/extensions/string.rb
|
39
|
+
- lib/rasskey/version.rb
|
40
|
+
- rasskey.gemspec
|
41
|
+
has_rdoc: true
|
42
|
+
homepage: http://github.com/lusis/rasskey
|
43
|
+
licenses: []
|
44
|
+
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
requirements: []
|
69
|
+
|
70
|
+
rubyforge_project: rasskey
|
71
|
+
rubygems_version: 1.3.7
|
72
|
+
signing_key:
|
73
|
+
specification_version: 3
|
74
|
+
summary: Small Ruby Library for ASCII drawing
|
75
|
+
test_files: []
|
76
|
+
|