# TbpgrUtils
[![Build Status](https://travis-ci.org/tbpgr/tbpgr_utils.png?branch=master)](https://travis-ci.org/tbpgr/tbpgr_utils)
[![Coverage Status](https://coveralls.io/repos/tbpgr/tbpgr_utils/badge.png)](https://coveralls.io/r/tbpgr/tbpgr_utils)
[![Code Climate](https://codeclimate.com/github/tbpgr/tbpgr_utils.png)](https://codeclimate.com/github/tbpgr/tbpgr_utils)
TbpgrUtils is Utilities.
## Installation
Add this line to your application's Gemfile:
gem 'tbpgr_utils'
And then execute:
$ bundle
Or install it yourself as:
$ gem install tbpgr_utils
## Usage
### List
| class/module/method | mean |
|:----------- |:------------ |
|[TbpgrUtils Array#to_table](#arrayto_table) |Array(Array, Array...) to table format. |
|[TbpgrUtils Array#to_html_table](#arrayto_html_table) |Array(Array, Array...) to html table format. |
|[TbpgrUtils Array#together](#arraytogether) |loop all arrays by block |
|[TbpgrUtils Array#together_at](#arraytogether_at) |together version of Array#at. together_at has alias :tat |
|[TbpgrUtils Array#together_clear](#arraytogether_clear) |together version of Array#clear. together_clear has alias :tclear |
|[TbpgrUtils Array#together_compact](#arraytogether_compact) |together version of Array#compact. together_compact has alias :tcompact. this is immutable. |
|[TbpgrUtils Array#together_compact!](#arraytogether_compact-1) |together version of Array#compact!. together_compact! has alias :tcompact! this is mutable. |
|[TbpgrUtils Array#together_concat](#arraytogether_concat) |together version of Array#concat. together_concat has alias :tconcat |
|[TbpgrUtils Array#together_delete](#arraytogether_delete) |together version of Array#delete. together_delete has alias :tdelete |
|[TbpgrUtils Array#together_delete_at](#arraytogether_delete_at) |together version of Array#delete_at. together_delete_at has alias :tdelete_at |
|[TbpgrUtils Array#together_delete_if](#arraytogether_delete_if) |together version of Array#delete_if. together_delete_if has alias :tdelete_if |
|[TbpgrUtils Array#together_empty?](#arraytogether_empty) |together version of Array#empty?. together_empty? has alias :tempty? |
|[TbpgrUtils Array#together_fill](#arraytogether_fill) |together version of Array#fill. together_fill has alias :tfill |
|[TbpgrUtils Array#together_first](#arraytogether_first) |together version of Array#first. together_first has alias :tfirst |
|[TbpgrUtils Array#together_include?](#arraytogether_include) |together version of Array#include?. together_include? has alias :tinclude? |
|[TbpgrUtils Array#together_index](#arraytogether_index) |together version of Array#index. together_index has alias :tindex |
|[TbpgrUtils Array#together_insert](#arraytogether_insert) |together version of Array#insert. together_insert has alias :tinsert |
|[TbpgrUtils Array#together_last](#arraytogether_last) |together version of Array#last. together_last has alias :tlast |
|[TbpgrUtils Array#together_map](#arraytogether_mapor-tmap-together_collect-tcollect) |together version of Enumerable#map. together_map has aliases [:tmap, :together_collect, :tcollect] |
|[TbpgrUtils Array#together_map!](#arraytogether_mapor-tmap-together_collect-tcollect-1) |together version of Enumerable#map!. together_map! has aliases [:tmap!, :together_collect!, :tcollect!] |
|[TbpgrUtils Array#together_pop](#arraytogether_popor-tpop) |together version of Array#pop. together_pop has alias :tpop |
|[TbpgrUtils Array#together_reduce](#arraytogether_reduceor-treduce-together_inject-tinject) |together version of Enumerable#reduce. together_reduce has aliases [:treduce, :together_inject, :tinject] |
|[TbpgrUtils Array#together_reverse](#arraytogether_reverseor-treverse) |together version of Array#reverse. together_reverse has alias :treverse |
|[TbpgrUtils Array#together_reverse!](#arraytogether_reverseor-treverse-1) |together version of Array#reverse!. together_reverse! has alias :treverse! |
|[TbpgrUtils Array#together_sample](#arraytogether_sampleor-tsample) |together version of Array#sample. together_sample has alias :tsample |
|[TbpgrUtils Array#together_select](#arraytogether_selector-tselect-together_find_all-tfindall) |together version of Enumerable#select. together_select has aliases [:tselect, :together_find_all, :tfindall] |
|[TbpgrUtils Array#together_shift](#arraytogether_shift) |together version of Array#shift. together_shift has alias :tshift |
|[TbpgrUtils Array#together_shuffle](#arraytogether_shuffleor-tshuffle) |together version of Array#shuffle. together_shuffle has alias :tshuffle |
|[TbpgrUtils Array#together_slice](#arraytogether_sliceor-tslice) |together version of Array#slice. together_slice has alias :tslice |
|[TbpgrUtils Array#together_with_index](#arraytogether_with_index) |loop all arrays by block with index |
|[AttributesHashable.to_hash](#attributeshashableto_hash) |define to_hash method for get instance_values |
|[AttributesInitializable::ClassMethods.attr_accessor_init](#attributesinitializableclassmethodsattr_accessor_init) |generate attr_accessor + initializer |
|[AttributesInitializable::ClassMethods.attr_reader_init](#attributesinitializableclassmethodsattr_reader_init) |generate attr_reader + initializer |
|[AttributesInitializable::ClassMethods.attr_writer init](#attributesinitializableclassmethodsattr_writer_init) |generate attr_writer + initializer |
|[EndERB.apply](#enderbapply) |for single template script using __END__ and DATA |
|[EvalHelper Object](#evalhelper-object) |enable to use EvalHelper in Object |
|[EvalHelper#attr_accessor_init_code](#evalhelperattr_accessor_init_code) |create attr_accessor + initialize code, for eval |
|[EvalHelper#each_do_code](#evalhelpereach_do_code) |create each do code, for eval |
|[EvalHelper#each_brace_code](#evalhelpereach_brace_code) |create each brace single line code, for eval |
|[EvalHelper#each_with_index_brace_code](#evalhelpereach_with_index_brace_code) |create eachwith_index_ brace single line code, for eval |
|[EvalHelper#each_with_index_do_code](#evalhelpereach_with_index_do_code) |create eachwith_index_ do code, for eval |
|[EvalHelper#if_code](#evalhelperif_code) |create if strings, for eval |
|[EvalHelper#if_code_after](#evalhelperif_code_after) |create after-if strings, for eval |
|[EvalHelper#require_code](#evalhelperrequire_code) |create require strings, for eval |
|[EvalHelper#require_relative_code](#evalhelperrequire_relative_code) |create require_relative strings, for eval |
|[EvalHelper#set_variable_code](#evalhelperset_variable_code) |create set_variable_code strings, for eval |
|[EvalHelper#set_variables_code](#evalhelperset_variables_code) |create set_variables_code strings, for eval |
|[EvalHelper#times_code](#evalhelpertimes_code) |create times_code strings, for eval |
|[EvalHelper#ternary_operator](#evalhelperternary_operator) |create ternary operator strings, for eval |
|[EvalHelper#unless_code](#evalhelperunless_code) |create unless strings, for eval |
|[EvalHelper#unless_code_after](#evalhelperunless_code_after) |create after-unless strings, for eval |
|[Familyable](#familyable) |user family model(family, person, parents, children, brothers) |
|[TbpgrUtils Fixnum to_fixnum_html_table](#fixnum-to_fixnum_html_table) |return value is fixnum html table |
|[TbpgrUtils Fixnum to_fixnum_table](#fixnumto_fixnum_table) |return value is fixnum table |
|[Ghostable module](#ghostable) |help to create ghost method(dynamic method define by ussing method_missing + pattern-method-name) |
|[TbpgrUtils Hash#html_table](#hashhtml_table) |get html table string from key + value |
|[TbpgrUtils Hash#table](#hashtable) |get pipe format table string from key + value |
|[TbpgrUtils Integer#palindromic_prime?](#integerpalindromic_prime) |Returns true if value is palindromic prime, false for a composite. |
|[TbpgrUtils Kernel booleans](#kerne-booleans) |True or False instance aliases. |
|[TbpgrUtils Kernel#bulk_define_methods](#kernelbulk_define_methods) |define methods to classes. methods have simple return value. |
|[TestToolbox Kernel#capture_stdout](#kernelcapture_stdout) |capture STDOUT |
|[TestToolbox Kernel#dp_line](#kerneldp_line) |debug print line for print-debugging |
|[TbpgrUtils Kernel#aa_ancestors](#kernelaa_ancestors) |Ascii Art Ancestors |
|[TbpgrUtils Kernel#bulk_puts_eval](#kernelbulk_puts_eval) |Puts each-line-code + eval result |
|[TbpgrUtils Kernel#evalb](#kernelevalb) |set attributes from hash |
|[TbpgrUtils Kernel#hash_to_attributes](#kernelhash_to_attributes) |eval block version |
|[TbpgrUtils Kernel#null](#kernelnull) |null is alias of nil |
|[TbpgrUtils Kernel#print_eval](#kernelprint_eval) |Print code + eval result |
|[TbpgrUtils Kernel#puts_eval](#kernelputs_eval) |Puts code + eval result |
|[MarkdownString.bold](#markdownstringbold) |Return markdown bold |
|[MarkdownString.heading1](#markdownstringheading1) |Return markdown heading level1 from text |
|[MarkdownString.heading2](#markdownstringheading2) |Return markdown heading level2 from text |
|[MarkdownString.heading3](#markdownstringheading3) |Return markdown heading level3 from text |
|[MarkdownString.heading4](#markdownstringheading4) |Return markdown heading level4 from text |
|[MarkdownString.heading5](#markdownstringheading5) |Return markdown heading level5 from text |
|[MarkdownString.heading6](#markdownstringheading6) |Return markdown heading level6 from text |
|[MarkdownString.hr](#markdownstringhr) |Return markdown hr |
|[MarkdownString.italic](#markdownstringitalic) |Return markdown italic |
|[MarkdownString.ol](#markdownstringol) |Return markdown ol from array |
|[MarkdownString.ul](#markdownstringul) |Return markdown ul from array |
|[MetasyntacticVariable](#metasyntacticvariable) |META variable, META variable for classes |
|[TbpgrUtils Module.alias_methods](#modulealias_methods) |create alias methods |
|[TbpgrUtils Numeric#dice_back](#numericdice_back) |return dice back number |
|[TbpgrUtils Numeric#dozen](#numericdozen) |get dozen number |
|[TbpgrUtils Numeric#is_ascii?](#numericis_ascii) |get is_ascii number |
|[TbpgrUtils Numeric to_binary_html_table](#numeric-to_binary_html_table) |binary html table |
|[TbpgrUtils Numeric to_binary_table](#numeric-to_binary_table) |binary table |
|[TbpgrUtils Numeric to_digit_html_table](#numeric-to_digit_html_table) |digit html table |
|[TbpgrUtils Numeric to_digit_table](#numeric-to_digit_table) |digit table |
|[TbpgrUtils Numeric to_hex_html_table](#numeric-to_hex_html_table) |hex html table |
|[TbpgrUtils Numeric to_hex_table](#numeric-to_hex_table) |hex table |
|[TbpgrUtils Numeric to_oct_html_table](#numeric-to_oct_html_table) |oct html table |
|[TbpgrUtils Numeric to_oct_table](#numeric-to_oct_table) |oct table |
|[TbpgrUtils Object#any_of?](#objectany_of) |if self match any one of items, return true |
|[TbpgrUtils Object#boolean?](#objectboolean) |data type check for boolean |
|[TbpgrUtils Object#guard](#objectguard) |data type check for guard |
|[TbpgrUtils Object#method_nameable?](#objectmethod_nameable) |object can use method name or not |
|[TbpgrUtils Object#my_methods](#objectmy_methods) |return public/protected/private self define methods |
|[TbpgrUtils Object#null?](#objectnull) |null? is alias of nil? |
|[TbpgrUtils Object#to_bool](#objectto_bool) |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
|[TbpgrUtils Object#unless_guard](#objectunless_guard) |data type check for unless_guard |
|[SimpleTournament](#simpletournament) |simple tournament |
|[TbpgrUtils String#ascii1_other2_size](#stringascii1_other2_size) |count string size. ascii => count1, not ascii => count2 |
|[TbpgrUtils String#ascii_unicode_html_table](#stringascii_unicode_html_table) |get ascii_unicode_html_table |
|[TbpgrUtils String#ascii_unicode_table](#stringascii_unicode_table) |get ascii_unicode_table |
|[TbpgrUtils String#comma_to_a](#stringcomma_to_a) |comma-format string to array |
|[TbpgrUtils String#cygwinpath_to_winpath](#stringcygwinpath_to_winpath) |convert cygwin path to windows path |
|[TbpgrUtils String#escape_quote](#stringescape_quote) |escape quote |
|[TbpgrUtils String#escape_double_quote](#stringescape_double_quote) |escape double quote |
|[TbpgrUtils String#hyphen_to_a](#stringhyphen_to_a) |hyphen-format string to array |
|[TbpgrUtils String#is_meta_variable?](#stringis_meta_variable) |is meta variable. |
|[TbpgrUtils String#justify_table](#stringjustify_table) |justify pipe format table string |
|[TbpgrUtils String#say](#stringsay) |say string |
|[TbpgrUtils String#spacing](#stringspacing) |get spacing string |
|[TbpgrUtils String#stripe](#stringstripe) |stripe string |
|[TbpgrUtils String#surround](#stringsurround) |surround string |
|[TbpgrUtils String#table_to_array](#stringtable_to_array) |convert table format string to array. |
|[TbpgrUtils String#to_hatena_heading](#stringto_hatena_heading) |create hatena-format heading string with Emmet-like grammar |
|[TbpgrUtils String#to_markdown_heading](#stringto_markdown_heading) |create markdown-format heading string with Emmet-like grammar |
|[TbpgrUtils String#to_space2_heading](#stringto_space2_heading) |create space2-format heading string with Emmet-like grammar |
|[TbpgrUtils String#to_space4_heading](#stringto_space4_heading) |create space4-format heading string with Emmet-like grammar |
|[TbpgrUtils String#to_tab_heading](#stringto_tab_heading) |create tab-format heading string with Emmet-like grammar |
|[TbpgrUtils String#unescape_double_quote](#stringunescape_double_quote) |unescape double quote |
|[TbpgrUtils String#unescape_quote](#stringunescape_quote) |unescape single quote |
|[TbpgrUtils String#winpath_to_cygwinpath](#stringwinpath_to_cygwinpath) |convert windows path to cygwin path |
|[TbpgrUtils Symbol#is_meta_variable?](#symbolis_meta_variable) |is meta variable. |
|[Templatable module](#templatable) |get result from template + placeholder |
|[TemplateMethodable module](#templatemethodable) |for Template Method Pattern |
### Array#to_table
~~~ruby
require 'tbpgr_utils'
[['header1', 'header2', 'header3'],['line1_1', 'line1_2', 'line1_3']].to_table
~~~
result
~~~
|header1|header2|header3|
|line1_1|line1_2|line1_3|
~~~
[back to list](#list)
### Array#to_html_table
~~~ruby
[['header1', 'header2', 'header3'],['line1_1', 'line1_2', 'line1_3']].to_html_table
~~~
result
~~~
header1 |
header2 |
header3 |
line1_1 |
line1_2 |
line1_3 |
~~~
no header case
~~~ruby
[['not_header1', 'not_header2', 'not_header3'],['line1_1', 'line1_2', 'line1_3']].to_html_table({no_header: true})
~~~
result
~~~
not_header1 |
not_header2 |
not_header3 |
line1_1 |
line1_2 |
line1_3 |
~~~
[back to list](#list)
### Array#together
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 4 3}
[alpha, numbers].together do |first, second|
print "#{first}:#{second}\n" # => output one:1, two:2, three:3
end
~~~
[back to list](#list)
### Array#together_at
~~~ruby
require 'tbpgr_utils'
# same elements size case
alpha = %w{one two three}
numbers = %w{1 2 3}
print [alpha, numbers].together_at 2 # => output ['three', 3]
# different elements size case
alpha = %w{one two three}
numbers = %w{1 2}
print [alpha, numbers].together_at 2 # => output ['three', nil]
~~~
[back to list](#list)
### Array#together_clear
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
[alpha, numbers].together_clear # => [[], []]
~~~
[back to list](#list)
### Array#together_compact
~~~ruby
require 'tbpgr_utils'
alpha = ['a','b','c', nil,'d']
numbers = [1, 2, nil, 3]
lists = [alpha, numbers]
ret = lists.together_compact
print lists # => output [['a','b','c', nil,'d'], [1, 2, nil, 3]]
print ret # => output [['a','b','c','d'], [1, 2, 3]]
~~~
[back to list](#list)
### Array#together_compact!
~~~ruby
require 'tbpgr_utils'
alpha = ['a','b','c', nil,'d']
numbers = [1, 2, nil, 3]
lists = [alpha, numbers]
ret = lists.together_compact!
print lists # => output [['a','b','c','d'], [1, 2, 3]]
print ret # => output [['a','b','c','d'], [1, 2, 3]]
~~~
[back to list](#list)
### Array#together_concat
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
[alpha, numbers].together_concat [4, 5, 6]
print alpha # => ["one", "two", "three", 4, 5, 6]
print numbers # => ["1", "2", "3", 4, 5, 6]
~~~
[back to list](#list)
### Array#together_delete
~~~ruby
require 'tbpgr_utils'
child1 = [1, 2, 3, 4]
child2 = [2, 3, 4, 5]
lists = [child1, child2]
ret = lists.together_delete 2
print lists # => output [[1, 3, 4], [3, 4, 5]]
~~~
if delete target is not exist
~~~ruby
require 'tbpgr_utils'
child1 = [1, 2, 3, 4]
child2 = [2, 3, 4, 5]
lists = [child1, child2]
ret = lists.together_delete 6
print ret # => nil
print lists # => output [[1, 2, 3, 4], [2, 3, 4, 5]]
~~~
if delete target is not exist and use block
~~~ruby
require 'tbpgr_utils'
child1 = [1, 2, 3, 4]
child2 = [2, 3, 4, 5]
lists = [child1, child2]
ret = lists.together_delete(6) { 999 }
print ret # => 999
print lists # => output [[1, 2, 3, 4], [2, 3, 4, 5]]
~~~
[back to list](#list)
### Array#together_delete_at
if delete_at target is exist
~~~ruby
require 'tbpgr_utils'
child1 = [1, 2, 3, 4]
child2 = [2, 3, 4, 5]
lists = [child1, child2]
ret = lists.together_delete_at 2
print ret # => [3, 4]
print lists # => output [[1, 2, 4], [2, 3, 5]]
~~~
if delete_at target is not exist
~~~ruby
require 'tbpgr_utils'
child1 = [1, 2, 3, 4]
child2 = [2, 3, 4, 5]
lists = [child1, child2]
ret = lists.together_delete_at 6
print ret # => [nil, nil]
print lists # => output [[1, 2, 3, 4], [2, 3, 4, 5]]
~~~
if delete_at target is exist(minus index)
~~~ruby
require 'tbpgr_utils'
child1 = [1, 2, 3, 4]
child2 = [2, 3, 4, 5]
lists = [child1, child2]
ret = lists.together_delete_at -3
print ret # => [2, 3]
print lists # => output [[1, 3, 4], [2, 4, 5]]
~~~
[back to list](#list)
### Array#together_delete_if
if delete_if target is exist
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2, 3, 4], [6, 4, 6, 8]]
ret = lists.together_delete_if {|first, second|(first + second).odd?}
print ret # => [[2, 4], [4, 8]]
~~~
if delete_if target is not exist. return nil.
~~~ruby
require 'tbpgr_utils'
lists = [[2, 2, 4, 4], [6, 4, 6, 8]]
ret = lists.together_delete_if {|first, second|(first + second).odd?}
print ret # => nil
~~~
[back to list](#list)
### Array#together_empty?
empty case
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_empty?
print ret # => true
~~~
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1], []]
ret = lists.together_empty?
print ret # => false
~~~
[back to list](#list)
### Array#together_fill
not use block case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_fill(99)
print ret # => [[99, 99, 99, 99, 99], [99, 99, 99, 99, 99]]
~~~
use block, no args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_fill { |i|(i + 1) + 1 }
print ret # => [[2, 3, 4, 5, 6], [2, 3, 4, 5, 6]]
~~~
use block, has args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_fill(2) { |i|(i + 1) + 1 }
print ret # => [[1, 2, 4, 5, 6], [6, 7, 4, 5, 6]]
~~~
[back to list](#list)
### Array#together_first
no args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_first
print ret # => [1, 6]
~~~
has args 2 case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_first 2
print ret # => [[1, 2], [6, 7]]
~~~
has args 0 case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_first 0
print ret # => [[], []]
~~~
has args over size case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_first 6
print ret # => [[*1..5], [*6..10]]
~~~
[back to list](#list)
### Array#together_include?
together_include? is bulk version of Array#include?
together_include? has alias :tinclude?
both include single ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_include? 5
print ret # => true
~~~
one include single ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_include? 9
print ret # => true
~~~
both not include single ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_include? 10
print ret # => false
~~~
both include multi ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_include? 5, true
print ret # => [true, true]
~~~
one include multi ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_include? 9, true
print ret # => [false, true]
~~~
both not include multi ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_include? 10, true
print ret # => [false, false]
~~~
[back to list](#list)
### Array#together_index
together_index has alias :tindex
both index exist case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_index 5
print ret # => [4, 0]
~~~
one include single ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_index 4
print ret # => [3, nil]
~~~
both not include single ret case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_index 10
print ret # => [nil, nil]
~~~
[back to list](#list)
### Array#together_insert
together_insert has alias :tinsert
both insert exist case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_insert(1, 55, 66)
print ret # => [[1, 55, 66, 2, 3, 4, 5], [5, 55, 66, 6, 7, 8, 9]]
~~~
both insert exist and minus index case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_insert(-2, 55, 66)
print ret # => [[1, 2, 3, 4, 55, 66, 5], [5, 6, 7, 8, 55, 66, 9]]
~~~
both insert exist case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*5..9]]
ret = lists.together_insert(6, 55, 66)
print ret # => [[1, 2, 3, 4, 5, nil, 55, 66], [5, 6, 7, 8, 9, nil, 55, 66]],
~~~
[back to list](#list)
### Array#together_last
together_last has alias :tlast
no args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_last
print ret # => [5, 10]
~~~
has args 2 case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_last 2
print ret # => [[4, 5], [9, 10]]
~~~
has args 0 case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_last 0
print ret # => [[], []]
~~~
has args over size case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_last 6
print ret # => [[*1..5], [*6..10]]
~~~
[back to list](#list)
### Array#together_map(or tmap, together_collect, tcollect)
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
ret = [alpha, numbers].together_map {|first, second|"#{first}:#{second}"}
print ret # => output [one:1, two:2, three:3]
~~~
if you want to return multi array, following.
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
ret = [alpha, numbers].together_map {|first, second|[["#{first}:ret"], ["#{second}:ret"]]}
print ret # => output [["one:ret", "two:ret", "three:ret"],["1:ret", "2:ret", "3:ret"]]
~~~
[back to list](#list)
### Array#together_map!(or tmap!, together_collect!, tcollect!)
if you want to return single array, following.
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
ary = [alpha, numbers]
ret = ary.together_map! do |first, second|
"#{first}:#{second}"
end
print ret # => output ['one:1', 'two:2', 'three:3']
print ary # => output ['one:1', 'two:2', 'three:3']
~~~
if you want to return multi array, following.
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
ary = [alpha, numbers]
ret = ary.together_map! do |first, second|
["#{first}:#{second}", "#{second}:#{first}"]
end
print ret # => output [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']]
print ary # => output [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']]
~~~
[back to list](#list)
### Array#together_pop(or tpop)
together_pop has alias :tpop
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_pop
print ret # => [2, 6]
print lists # => [1, 5]
~~~
empty case
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_pop
print ret # => [nil, nil]
print lists # => [[], []]
~~~
not empty case with args
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_pop 2
print ret # => [[1, 2], [5, 6]]
print lists # => [[], []]
~~~
not empty case with args
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_pop 2
print ret # => [[], []]
print lists # => [[], []]
~~~
[back to list](#list)
### Array#together_reduce(or :treduce, :together_inject, :tinject)
* if you want to single return
~~~ruby
require 'tbpgr_utils'
firsts = [1, 2, 3, 4]
seconds = [4, 2, 3, 1]
ret = [firsts, seconds].together_reduce{|memo, first, second|memo + first + second}
print ret # => output 20
~~~
* if you want to single return with init value
~~~ruby
require 'tbpgr_utils'
firsts = [1, 2, 3, 4]
seconds = [4, 2, 3, 1]
ret = [firsts, seconds].together_reduce(10){|memo, first, second|memo + first + second}
print ret # => output 30
~~~
* if you want to single return with init string value
~~~ruby
require 'tbpgr_utils'
firsts = %w{a b c}
seconds = %w{1 2 3}
ret = [firsts, seconds].together_reduce('start-'){|memo, first, second|memo + first + second}
print ret # => output 'start-a1b2c3'
~~~
* if you want to single return with init Array value
~~~ruby
require 'tbpgr_utils'
firsts = [1, 2, 3, 4]
seconds = [4, 2, 3, 1]
ret = [firsts, seconds].together_reduce([]){|memo, first, second|memo << first + second}
print ret # => output [5, 4, 6, 5]
~~~
* if you want to single return with init Hash value
~~~ruby
require 'tbpgr_utils'
firsts = [1, 2, 3, 4]
seconds = [4, 2, 3, 1]
ret = [firsts, seconds].together_reduce({}){|memo, first, second|memo[first] = second;memo}
print ret # => output {1=>4, 2=>2, 3=>3, 4=>1}
~~~
[back to list](#list)
### Array#together_reverse(or :treverse)
together_reverse has alias :treverse
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_reverse
print ret # => [[2, 1], [6, 5]]
print lists # => [[1, 2], [5, 6]]
~~~
one empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], []]
ret = lists.together_reverse
print ret # => [[2, 1], []]
print lists # => [[1, 2], []]
~~~
[back to list](#list)
### Array#together_reverse!(or :treverse!)
together_reverse! has alias :treverse!
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_reverse!
print ret # => [[2, 1], [6, 5]]
print lists # => [[2, 1], [6, 5]]
~~~
one empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], []]
ret = lists.together_reverse!
print ret # => [[2, 1], []]
print lists # => [[2, 1], []]
~~~
[back to list](#list)
### Array#together_sample(or :tsample)
together_sample has alias :tsample
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_sample
print ret # => [1 or 2, 5 or 6]
~~~
empty case
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_sample
print ret # => [nil, nil]
~~~
not empty case with args
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_sample 2
print ret # => [[1 or 2, 1 or 2], [5 or 6, 5 or 6]]
~~~
not empty case with args
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_sample 2
print ret # => [[], []]
~~~
not empty, over size case with args
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_sample 3
print ret # => [[1 or 2, 1 or 2], [5 or 6, 5 or 6]]
~~~
[back to list](#list)
### Array#together_select(or tselect, together_find_all, tfindall)
~~~ruby
require 'tbpgr_utils'
firsts = [1, 2, 3, 4]
seconds = [4, 2, 3, 1]
ret = [firsts, seconds].together_select{|first, second|first == second}
print ret # => output [[2, 3], [2, 3]]
~~~
if you want to return multi array, following.
~~~ruby
require 'tbpgr_utils'
firsts = [1, 2, 3, 4]
seconds = [4, 2, 3, 1]
ret = [firsts, seconds].together_select{|first, second|[first.odd?, second.even?]}
print ret # => output [[1, 3], [4, 2]]
~~~
[back to list](#list)
### Array#together_shift(or tshift)
together_shift has alias :tshift
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_shift
print ret # => [1, 5]
print lists # => [2, 6]
~~~
empty case
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_shift
print ret # => [nil, nil]
print lists # => [[], []]
~~~
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_shift 2
print ret # => [[1, 2], [5, 6]]
print lists # => [[], []]
~~~
not empty case
~~~ruby
require 'tbpgr_utils'
lists = [[], []]
ret = lists.together_shift 2
print ret # => [[], []]
print lists # => [[], []]
~~~
[back to list](#list)
### Array#together_shuffle(or :tshuffle)
together_shuffle has alias :tshuffle
~~~ruby
require 'tbpgr_utils'
lists = [[1, 2], [5, 6]]
ret = lists.together_shuffle
print ret # => [[1 or 2, 1 or 2], [5 or 6, 5 or 6]]
~~~
[back to list](#list)
### Array#together_slice(or :tslice)
single args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_slice 2
print ret # => [3, 8]
~~~
multi args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_slice 2, 2
print ret # => [[3, 4], [8, 9]]
~~~
range args case
~~~ruby
require 'tbpgr_utils'
lists = [[*1..5], [*6..10]]
ret = lists.together_slice (2..3)
print ret # => [[3, 4], [8, 9]]
~~~
[back to list](#list)
### Array#together_with_index
~~~ruby
require 'tbpgr_utils'
alpha = %w{one two three}
numbers = %w{1 2 3}
[alpha, numbers].together_with_index do |first, second, index|
print "#{index.to_s}:#{first}:#{second}\n" # => output 0:one:1, 1:two:2, 2:three:3
end
~~~
[back to list](#list)
### AttributesHashable.to_hash
~~~ruby
require 'attributes_initializable'
require 'attributes_hashable'
class Hoge
include AttributesInitializable
attr_accessor_init :hoge, :hige
include AttributesHashable
end
hoge = Hoge.new do |h|
h.hoge = 'hoge'
h.hige = 'hige'
end
hoge.to_hash # => {:hoge=>"hoge", :hige=>"hige"}
# After include AttributesHashable, you can use Hash.try_convert.
Hash.try_convert hoge # => {:hoge=>"hoge", :hige=>"hige"}
~~~
[back to list](#list)
### AttributesInitializable::ClassMethods.attr_accessor_init
~~~ruby
require 'attributes_initializable'
class AccessorSample
include AttributesInitializable
attr_accessor_init :atr1, :atr2
end
atr_sample1 = AccessorSample.new :atr1 => 'atr1', :atr2 => 'atr2'
p atr_sample1.atr1 # => atr1
p atr_sample1.atr2 # => atr2
atr_sample2 = AccessorSample.new do |a|
a.atr1 = 'atr1'
a.atr2 = 'atr2'
end
p atr_sample2.atr1 # => atr1
p atr_sample2.atr2 # => atr2
~~~
same mean code is
~~~ruby
class AccessorSample
attr_accessor :atr1, :atr2
def initialize(values = nil, &block)
return yield self if block
@atr1 = values[:atr1]
@atr2 = values[:atr2]
end
end
atr_sample1 = AccessorSample.new :atr1 => 'atr1', :atr2 => 'atr2'
p atr_sample1.atr1 # => atr1
p atr_sample1.atr2 # => atr2
atr_sample2 = AccessorSample.new do |a|
a.atr1 = 'atr1'
a.atr2 = 'atr2'
end
p atr_sample2.atr1 # => atr1
p atr_sample2.atr2 # => atr2
~~~
[back to list](#list)
### AttributesInitializable::ClassMethods.attr_reader_init
~~~ruby
require 'attributes_initializable'
class AccessorSample
include AttributesInitializable
attr_reader_init :atr1, :atr2
end
atr_sample1 = AccessorSample.new :atr1 => 'atr1', :atr2 => 'atr2'
p atr_sample1.atr1 # => atr1
p atr_sample1.atr2 # => atr2
# can not use writer.
# atr_sample2 = AccessorSample.new do |a|
# a.atr1 = 'atr1'
# a.atr2 = 'atr2'
# end
~~~
same mean code is
~~~ruby
class AccessorSample
attr_reader :atr1, :atr2
def initialize(values = nil, &block)
return yield self if block
@atr1 = values[:atr1]
@atr2 = values[:atr2]
end
end
atr_sample1 = AccessorSample.new :atr1 => 'atr1', :atr2 => 'atr2'
p atr_sample1.atr1 # => atr1
p atr_sample1.atr2 # => atr2
# can not use writer.
# atr_sample2 = AccessorSample.new do |a|
# a.atr1 = 'atr1'
# a.atr2 = 'atr2'
# end
~~~
[back to list](#list)
### AttributesInitializable::ClassMethods.attr_writer_init
~~~ruby
require 'attributes_initializable'
class AccessorSample
include AttributesInitializable
attr_writer_init :atr1, :atr2
end
atr_sample1 = AccessorSample.new :atr1 => 'atr1', :atr2 => 'atr2'
# can not use reader
# p atr_sample1.atr1 # => atr1
# p atr_sample1.atr2 # => atr2
atr_sample1.instance_variable_get "@atr1" # => atr1
atr_sample1.instance_variable_get "@atr2" # => atr2
atr_sample2 = AccessorSample.new do |a|
a.atr1 = 'atr1'
a.atr2 = 'atr2'
end
# can not use reader
# p atr_sample2.atr1 # => atr1
# p atr_sample2.atr2 # => atr2
atr_sample2.instance_variable_get "@atr1" # => atr1
atr_sample2.instance_variable_get "@atr2" # => atr2
~~~
same mean code is
~~~ruby
class AccessorSample
attr_writer :atr1, :atr2
def initialize(values = nil, &block)
return yield self if block
@atr1 = values[:atr1]
@atr2 = values[:atr2]
end
end
atr_sample1 = AccessorSample.new :atr1 => 'atr1', :atr2 => 'atr2'
# can not use reader
# p atr_sample1.atr1 # => atr1
# p atr_sample1.atr2 # => atr2
atr_sample1.instance_variable_get "@atr1" # => atr1
atr_sample1.instance_variable_get "@atr2" # => atr2
atr_sample2 = AccessorSample.new do |a|
a.atr1 = 'atr1'
a.atr2 = 'atr2'
end
# can not use reader
# p atr_sample2.atr1 # => atr1
# p atr_sample2.atr2 # => atr2
atr_sample2.instance_variable_get "@atr1" # => atr1
atr_sample2.instance_variable_get "@atr2" # => atr2
~~~
[back to list](#list)
### EndERB.apply
for single template script using __END__ and DATA
sample case
~~~ruby
require "end_erb"
def hoge
hash = {
hoge: '@hoge@',
hige: '@hige@',
}
EndERB.apply(hash)
end
puts hoge
__END__
hoge=<%=hash[:hoge]%>
hige=<%=hash[:hige]%>
~~~
output
~~~
hoge=@hoge@
hige=@hige@
~~~
[back to list](#list)
### Familyable
5 person case
~~~ruby
require 'familyable'
persons = [
a = Familyable::Person.new(id: 1, parent_ids: [2, 3]),
b = Familyable::Person.new(id: 2, parent_ids: []),
c = Familyable::Person.new(id: 3, parent_ids: [4],),
d = Familyable::Person.new(id: 4, parent_ids: [3]),
e = Familyable::Person.new(id: 5, parent_ids: [2]),
]
family = Familyable::Family.new(family: persons)
family.get_parents a # => return person [b, c]
family.get_children b # => return person [a, e]
family.get_brothers a # => return person [d, e]
~~~
If you want to use other model instead of person,
Create model that has two fileds that are 'id' and 'parent_ids'.
[back to list](#list)
### Fixnum.to_fixnum_html_table
1 to 10 by 2 case
~~~ruby
require 'tbpgr_utils'
Fixnum.to_fixnum_html_table(1, 10, 2)
~~~
result
~~~
~~~
[back to list](#list)
### Fixnum.to_fixnum_table
1 to 100 by 10 case
~~~ruby
Fixnum.to_fixnum_table(1, 100, 10)
~~~
result
~~~
| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|
|11|12|13|14|15|16|17|18|19| 20|
|21|22|23|24|25|26|27|28|29| 30|
|31|32|33|34|35|36|37|38|39| 40|
|41|42|43|44|45|46|47|48|49| 50|
|51|52|53|54|55|56|57|58|59| 60|
|61|62|63|64|65|66|67|68|69| 70|
|71|72|73|74|75|76|77|78|79| 80|
|81|82|83|84|85|86|87|88|89| 90|
|91|92|93|94|95|96|97|98|99|100|
~~~
1 to 10 by 2 case
~~~ruby
Fixnum.to_fixnum_table(1, 10, 2)
~~~
result
~~~
|1| 2|
|3| 4|
|5| 6|
|7| 8|
|9|10|
~~~
[back to list](#list)
### Ghostable
* include Ghostable
* create ghost method by using Ghostable::ghost_method
* ghost_method first_args = method_name_pattern
* ghost_method second_args = method_base_name Symbol(using in Ghostable internal logic)
* ghost_method third = block. this block is main logic. block can use args[method_name, *args, &block]
sample ghost method define module.
~~~ruby
require 'ghostable'
module Checkable
include Ghostable
ghost_method /check_range_.*\?$/, :check_range do |method_name, *args, &block|
method_name.to_s =~ /(check_range_)(\d+)(_to_)(\d*)/
from = $2.to_i
to = $4.to_i
value = args.first
(from..to).include? value
end
ghost_method /^contain_.*\?$/, :check_contain do |method_name, *args, &block|
method_name.to_s =~ /^(contain_)(.*)(\?)/
word = $2
value = args.first
value.include? word
end
end
~~~
* use ghost method
sample ghost method use class
~~~ruby
class SampleChecker
include Checkable
end
sample = SampleChecker.new
sample.check_range_3_to_5?(4) # => return true
sample.check_range_3_to_5?(6) # => return false
sample.check_range_3_to_6?(6) # => return true
sample.contain_hoge? "test_hoge_test" # => return true
sample.contain_hoge? "test_hige_test" # => return false
sample.contain_hige? "test_hige_test" # => return true
~~~
[back to list](#list)
### Kernel#capture_stdout
capture STDOUT to String. This method can use in STDOUT contents test.
~~~ruby
require 'test_toolbox'
result = capture_stdout {puts "test"} # => "test"
# no stdout case. return empty.
result = capture_stdout {sleep 0.1} # => ""(empty)
~~~
[back to list](#list)
### Kernel#dp_line
debug print line for print-debugging.
~~~ruby
require 'test_toolbox'
# default usage
dp_line __LINE__
# output is following. yy = line no.
# => --------------------|filename=|line=yy|--------------------\n
# output with filename
dp_line __LINE__, filename: __FILE__
# output is following. xx=filenamem, yy = line no.
# => --------------------|filename=xx|line=yy|--------------------\n
# output with specific line charactor.
dp_line __LINE__, filename: __FILE__, char: '@'
# output is following. xx=filenamem, yy = line no.
# => @@@@@@@@@@@@@@@@@@@@|filename=xx|line=yy$|@@@@@@@@@@@@@@@@@@@@\n
~~~
[back to list](#list)
### Hash#html_table
~~~ruby
require 'tbpgr_utils'
{
:key_1 => :value1,
:key__2 => :value2,
:key___3 => :value3,
}.html_table
~~~
result
~~~
key_1 |
value1 |
key__2 |
value2 |
key___3 |
value3 |
~~~
[back to list](#list)
### Hash#table
~~~ruby
require 'tbpgr_utils'
{
:key_1 => :value1___________________,
:key__2 => :value2,
:key___3 => :value3,
}.table
~~~
result
~~~ruby
|key_1 |value1___________________|
|key__2 |value2 |
|key___3|value3 |
~~~
[back to list](#list)
### Integer#palindromic_prime
~~~ruby
require 'tbpgr_utils'
0.palindromic_prime? # => false
1.palindromic_prime? # => false
2.palindromic_prime? # => true
11.palindromic_prime? # => true
757.palindromic_prime? # => true
758.palindromic_prime? # => false
~~~
[back to list](#list)
### Kernel booleans
~~~ruby
require 'tbpgr_utils'
puts yes # return true
puts ok # return true
puts good # return true
puts no # return false
puts ng # return false
puts bad # return false
~~~
[back to list](#list)
### Kernel#bulk_define_methods
Define methods to classes. Methods have simple return value.
~~~ruby
require 'tbpgr_utils'
bulk_define_methods [NilClass, FalseClass], :blank?, true
bulk_define_methods [TrueClass, Numeric], "blank?", false
puts nil.blank? # => true
puts false.blank? # => true
puts true.blank? # => false
puts 1.blank? # => false
bulk_define_methods [NilClass, FalseClass], [:blank?, :present?], [true, false]
bulk_define_methods [TrueClass, Numeric], [:blank?, :present?], [false, true]
puts nil.blank? # => true
puts nil.present? # => false
puts false.blank? # => true
puts false.present? # => false
puts true.blank? # => false
puts true.present? # => true
puts 1.blank? # => false
puts 1.present? # => true
~~~
if you don't use bulk_define_methods, followinng code is same mean.
~~~ruby
class NilClass
def blank?
true
end
def present?
false
end
end
class FalseClass
def blank?
true
end
def present?
false
end
end
~~~
[back to list](#list)
### Kernel#aa_ancestors
Ascii Art Ancestors
~~~ruby
class BaseHogeForAncestors;end
class HogeForAncestors < BaseHogeForAncestors;end
puts HogeForAncestors.aa_ancestors
~~~
result is ...
~~~
----------------------
| BasicObject |
----------------------
|
----------------------
| Kernel |
----------------------
|
----------------------
| Object |
----------------------
|
----------------------
|BaseHogeForAncestors|
----------------------
|
----------------------
| HogeForAncestors |
----------------------
~~~
[back to list](#list)
### Kernel#evalb
~~~ruby
require 'tbpgr_utils'
n = 1
actual = evalb(binding) do
<<-EOS
n = n + 1
n = n + 2
EOS
end
print actual # => 4
~~~
[back to list](#list)
### Kernel#hash_to_attributes
~~~ruby
require 'tbpgr_utils'
class Person
attr_accessor :name, :age
end
person = Person.new
person.hash_to_attributes({name: 'hoge', age: 33})
~~~
result
~~~ruby
#
~~~
[back to list](#list)
### Kernel#null
~~~ruby
require 'tbpgr_utils'
null # => nil
~~~
[back to list](#list)
### Kernel#print_eval
This method for sample code. for manual, for blog-entry's-snippet ...etc.
~~~ruby
print_eval 8/4, binding # => 8/4 # => 2
message = 'msg'
print_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"
~~~
output
~~~
8/4 # => 2"hoge-#{message}" # => "hoge-msg"
~~~
[back to list](#list)
### Kernel#puts_eval
This method for sample code. for manual, for blog-entry's-snippet ...etc.
~~~ruby
puts_eval 8/4, binding
message = 'msg'
puts_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"
~~~
output
~~~
8/4 # => 2
"hoge-#{message}" # => "hoge-msg"
~~~
[back to list](#list)
### Kernel#bulk_puts_eval
multi line version of puts_eval.
~~~ruby
message = "msg"
bulk_puts_eval binding, <<-EOS
"hoge-hige1" + "add" + message
"hoge-hige2" + "add" + message
EOS
~~~
output
~~~
"hoge-hige1" + "add" + message # => "hoge-hige1addmsg"
"hoge-hige2" + "add" + message # => "hoge-hige2addmsg"
~~~
[back to list](#list)
### EvalHelper Object
enable to use EvalHelper in Object
~~~ruby
require 'eval_helper_object'
require_code("hoge") # => 'require "hoge"'
~~~
[back to list](#list)
### EvalHelper#attr_accessor_init_code
single case
~~~ruby
class EvalHelperAttrAccessorInitTest
include EvalHelper
def hoge(args)
attr_accessor_init_code(args)
end
end
EvalHelperAttrAccessorInitTest.new.hoge('atr1')
~~~
result
~~~ruby
attr_accessor :atr1
def initialize(atr1)
@atr1 = atr1
end
~~~
multi case
~~~ruby
class EvalHelperAttrAccessorInitTest
include EvalHelper
def hoge(args)
attr_accessor_init_code(args)
end
end
EvalHelperAttrAccessorInitTest.new.hoge(['atr1', 'atr2'])
~~~
result
~~~ruby
attr_accessor :atr1, :atr2
def initialize(atr1, atr2)
@atr1 = atr1
@atr2 = atr2
end
~~~
[back to list](#list)
### EvalHelper#each_do_code
~~~ruby
require 'eval_helper'
class EvalHelperEacjBraceTest
include EvalHelper
def hoge(hash)
each_do_code(hash[:target], hash[:proc])
end
end
hash = {
target: '[:a, :b]',
proc: "puts \"\#{v}1\"\nputs \"\#{v}2\"\n",
}
EvalHelperEacjBraceTest.new.hoge(hash) # => return "[:a, :b].each do |v|\n puts \"\#{v}1\"\n puts \"\#{v}2\"\nend"
~~~
[back to list](#list)
### EvalHelper#each_brace_code
~~~ruby
require 'eval_helper'
class EvalHelperEacjBraceTest
include EvalHelper
def hoge(hash)
each_brace_code(hash[:target], hash[:proc])
end
end
hash = {
target: '[:a, :b]',
proc: 'puts v',
}
EvalHelperEacjBraceTest.new.hoge(hash) # => return '[:a, :b].each { |v|puts v }'
~~~
[back to list](#list)
### EvalHelper#each_with_index_brace_code
~~~ruby
require 'eval_helper'
class EvalHelperEachWithIndexBraceTest
include EvalHelper
def hoge(hash)
each_with_index_brace_code(hash[:target], hash[:proc])
end
end
hash = {
target: '[:a, :b]',
proc: 'puts "#{i}:#{v}"',
}
EvalHelperEachWithIndexBraceTest.new.hoge(hash) # => return '[:a, :b].each_with_index { |v, i|puts "#{i}:#{v}" }'
~~~
[back to list](#list)
### EvalHelper#each_with_index_do_code
~~~ruby
require 'eval_helper'
class EvalHelperEachWithIndexDoTest
include EvalHelper
def hoge(hash)
each_with_index_do_code(hash[:target], hash[:proc])
end
end
hash = {
target: '[:a, :b]',
proc: "puts \"\#{i}:\#{v}1\"\nputs \"\#{i}:\#{v}2\"\n",
}
EvalHelperEachWithIndexDoTest.new.hoge(hash) # => return "[:a, :b].each_with_index do |v, i|\n puts \"\#{i}:\#{v}1\"\n puts \"\#{i}:\#{v}2\"\nend"
~~~
[back to list](#list)
### EvalHelper#if_code
if case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = if_code(hash[:if_cond], hash[:if_proc], hash[:else_proc])
instance_eval code
end
end
hash = {
input: "test",
if_cond: "msg == 'test'",
if_proc: "true",
else_proc: "false",
}
EvalHelperTest.new.hoge(hash) # => return true
~~~
else case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = if_code(hash[:if_cond], hash[:if_proc], hash[:else_proc])
instance_eval code
end
end
hash = {
input: "not_test",
if_cond: "msg == 'test'",
if_proc: "true",
else_proc: "false",
}
EvalHelperTest.new.hoge(hash) # => return false
~~~
[back to list](#list)
### EvalHelper#if_code_after
if case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = if_code_after(hash[:if_cond], hash[:if_proc])
ret = 'dafault'
instance_eval code
ret
end
end
hash = {
input: "test",
if_cond: "msg == 'test'",
if_proc: "ret = 'true'",
}
EvalHelperTest.new.hoge(hash) # => return 'true'
~~~
else case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = if_code_after(hash[:if_cond], hash[:if_proc])
ret = 'ret = "true"'
instance_eval code
ret
end
end
hash = {
input: "not_test",
if_cond: "msg == 'test'",
if_proc: "ret = 'true'",
}
EvalHelperTest.new.hoge(hash) # => return 'default'
~~~
[back to list](#list)
### EvalHelper#require_code
single require case
~~~ruby
require 'eval_helper'
class EvalHelperRequireTest
include EvalHelper
def hoge(*args)
require_code(args)
end
end
args = 'tbpgr_utils'
EvalHelperRequireTest.new.hoge(args) # => return "require 'tbpgr_utils'\n"
~~~
muiti require case
~~~ruby
require 'eval_helper'
class EvalHelperRequireTest
include EvalHelper
def hoge(*args)
require_code(args)
end
end
args = ['tbpgr_utils', 'eval_helper']
EvalHelperRequireTest.new.hoge(args) # => return "require 'tbpgr_utils'\nrequire 'eval_helper'\n"
~~~
[back to list](#list)
### EvalHelper#require_relative_code
single require_relative case
~~~ruby
require 'eval_helper'
class EvalHelperRequireRelativeTest
include EvalHelper
def hoge(*args)
require_relative_code(args)
end
end
args = 'tbpgr_utils'
EvalHelperRequireRelativeTest.new.hoge(args) # => return "require_relative 'tbpgr_utils'\n"
~~~
muiti require_relative case
~~~ruby
require 'eval_helper'
class EvalHelperRequireRelativeTest
include EvalHelper
def hoge(*args)
require_relative_code(args)
end
end
args = ['tbpgr_utils', 'eval_helper']
EvalHelperRequireRelativeTest.new.hoge(args) # => return "require_relative 'tbpgr_utils'\nrequire_relative 'eval_helper'\n"
~~~
[back to list](#list)
### EvalHelper#set_variable_code
set string variable case
~~~ruby
require 'eval_helper'
class EvalHelperSetVariableTest
include EvalHelper
def hoge(name, value)
set_variable_code(name, value)
end
end
hash = {
name: 'hoge',
value: '"hoge"',
}
EvalHelperSetVariableTest.new.hoge(hash[:name], hash[:value])
~~~
return
~~~ruby
hoge = "hoge"
~~~
set numeric variable case
~~~ruby
require 'eval_helper'
class EvalHelperSetVariableTest
include EvalHelper
def hoge(name, value)
set_variable_code(name, value)
end
end
hash = {
name: 'hoge_num',
value: '1',
}
EvalHelperSetVariableTest.new.hoge(hash[:name], hash[:value])
~~~
return
~~~ruby
hoge_num = 1
~~~
[back to list](#list)
### EvalHelper#set_variables_code
~~~ruby
require 'eval_helper'
class EvalHelperSetVariablesTest
include EvalHelper
def hoge(variables)
set_variables_code(variables)
end
end
variables = [
{
name: 'name1',
value: '"value1"',
},
{
name: 'name2',
value: '"value2"',
},
]
EvalHelperSetVariablesTest.new.hoge(variables)
~~~
[back to list](#list)
### EvalHelper#times_code
single_line_proc case
~~~ruby
require 'eval_helper'
class EvalHelperTimesTest
include EvalHelper
def hoge(number, proc)
times_code(number, proc)
end
end
hash = {
number: 2,
proc: 'puts "#{i}times"',
}
EvalHelperTimesTest.new.hoge(hash[:number], hash[:proc])
~~~
return
~~~
2.times { |i| puts "#{i}times" }
~~~
multi_line_proc case
~~~ruby
require 'eval_helper'
class EvalHelperTimesTest
include EvalHelper
def hoge(number, proc)
times_code(number, proc)
end
end
hash = {
number: 3,
proc: 'puts "#{i}times"\nputs "#{i*2}times"',
}
EvalHelperTimesTest.new.hoge(hash[:number], hash[:proc])
~~~
return
~~~
3.times do |i|
puts "#{i}times"
puts "#{i*2}times"
end
~~~
[back to list](#list)
### EvalHelper#ternary_operator
true case
~~~ruby
require 'eval_helper'
class EvalHelperTernaryTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = \
if hash[:ret]
ternary_operator(hash[:cond], hash[:true_case], hash[:false_case], hash[:ret])
else
ternary_operator(hash[:cond], hash[:true_case], hash[:false_case])
end
instance_eval code
end
end
hash = {
input: "test",
cond: "msg == 'test'",
true_case: "true",
false_case: "false",
ret: "ret",
}
EvalHelperTernaryTest.new.hoge(hash) # => return 'true'
~~~
false case
~~~ruby
require 'eval_helper'
class EvalHelperTernaryTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = \
if hash[:ret]
ternary_operator(hash[:cond], hash[:true_case], hash[:false_case], hash[:ret])
else
ternary_operator(hash[:cond], hash[:true_case], hash[:false_case])
end
instance_eval code
end
end
hash = {
input: "not_test",
cond: "msg == 'test'",
true_case: "true",
false_case: "false",
ret: "ret",
}
EvalHelperTernaryTest.new.hoge(hash) # => return 'false'
~~~
[back to list](#list)
### EvalHelper#unless_code
unless case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = unless_code(hash[:unless_cond], hash[:unless_proc], hash[:else_proc])
instance_eval code
end
end
hash = {
input: "not_test",
unless_cond: "msg == 'test'",
unless_proc: "true",
else_proc: "false",
}
EvalHelperTest.new.hoge(hash) # => return true
~~~
else case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = unless_code(hash[:unless_cond], hash[:unless_proc], hash[:else_proc])
instance_eval code
end
end
hash = {
input: "test",
unless_cond: "msg == 'test'",
unless_proc: "true",
else_proc: "false",
}
EvalHelperTest.new.hoge(hash) # => return false
~~~
[back to list](#list)
### EvalHelper#unless_code_after
unless case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = unless_code_after(hash[:unless_cond], hash[:unless_proc])
ret = 'dafault'
instance_eval code
ret
end
end
hash = {
input: "not_test",
unless_cond: "msg == 'test'",
unless_proc: "ret = 'true'",
}
EvalHelperTest.new.hoge(hash) # => return 'true'
~~~
else case
~~~ruby
require 'eval_helper'
class EvalHelperTest
include EvalHelper
def hoge(hash)
msg = hash[:input]
code = unless_code_after(hash[:unless_cond], hash[:unless_proc])
ret = 'ret = "true"'
instance_eval code
ret
end
end
hash = {
input: "test",
unless_cond: "msg == 'test'",
unless_proc: "ret = 'true'",
}
EvalHelperTest.new.hoge(hash) # => return 'default'
~~~
[back to list](#list)
### MarkdownString.bold
~~~ruby
require 'markdown_string'
MarkdownString.bold("strong") # => "**strong**"
MarkdownString.bold("") # => "****"
MarkdownString.bold(nil) # => "****"
~~~
[back to list](#list)
### MarkdownString.heading1
~~~ruby
require 'markdown_string'
MarkdownString.heading1("title") # => "# title"
MarkdownString.heading1("") # => "# "
MarkdownString.heading1(nil) # => "# "
MarkdownString.heading1(12345) # => "# 12345"
~~~
[back to list](#list)
### MarkdownString.heading2
~~~ruby
require 'markdown_string'
MarkdownString.heading2("title") # => "## title"
MarkdownString.heading2("") # => "## "
MarkdownString.heading2(nil) # => "## "
MarkdownString.heading2(12345) # => "## 12345"
~~~
[back to list](#list)
### MarkdownString.heading3
~~~ruby
require 'markdown_string'
MarkdownString.heading3("title") # => "### title"
MarkdownString.heading3("") # => "### "
MarkdownString.heading3(nil) # => "### "
MarkdownString.heading3(12345) # => "### 12345"
~~~
[back to list](#list)
### MarkdownString.heading4
~~~ruby
require 'markdown_string'
MarkdownString.heading4("title") # => "#### title"
MarkdownString.heading4("") # => "#### "
MarkdownString.heading4(nil) # => "#### "
MarkdownString.heading4(12345) # => "#### 12345"
~~~
[back to list](#list)
### MarkdownString.heading5
~~~ruby
require 'markdown_string'
MarkdownString.heading5("title") # => "##### title"
MarkdownString.heading5("") # => "##### "
MarkdownString.heading5(nil) # => "##### "
MarkdownString.heading5(12345) # => "##### 12345"
~~~
[back to list](#list)
### MarkdownString.heading6
~~~ruby
require 'markdown_string'
MarkdownString.heading6("title") # => "###### title"
MarkdownString.heading6("") # => "###### "
MarkdownString.heading6(nil) # => "###### "
MarkdownString.heading6(12345) # => "###### 12345"
~~~
[back to list](#list)
### MarkdownString.hr
~~~ruby
require 'markdown_string'
MarkdownString.hr # => '---'
~~~
[back to list](#list)
### MarkdownString.italic
~~~ruby
require 'markdown_string'
MarkdownString.italic 'italic' # => '*italic*'
~~~
[back to list](#list)
### MarkdownString.ol
case list
~~~ruby
require 'markdown_string'
MarkdownString.ol(%w{a b c})
~~~
result
~~~
1. a
1. b
1. c
~~~
case not list
~~~ruby
require 'markdown_string'
MarkdownString.ol("test") # => "test"
case nil list
~~~ruby
require 'markdown_string'
MarkdownString.ol([nil, nil])
~~~
result
~~~
1.
1.
~~~
case empty list
~~~ruby
require 'markdown_string'
MarkdownString.ol([]) # => ""
~~~
[back to list](#list)
### MarkdownString.ul
case list
~~~ruby
require 'markdown_string'
MarkdownString.ul(%w{a b c})
~~~
result
~~~
* a
* b
* c
~~~
case not list
~~~ruby
require 'markdown_string'
MarkdownString.ul("test") # => "test"
case nil list
~~~ruby
require 'markdown_string'
MarkdownString.ul([nil, nil])
~~~
result
~~~
*
*
~~~
case empty list
~~~ruby
require 'markdown_string'
MarkdownString.ul([]) # => ""
~~~
[back to list](#list)
### MetasyntacticVariable
* META variable
~~~ruby
MetasyntacticVariable::META_VARIABLES # => [:foo, :bar, :baz, :qux, :quux, :corge, :grault, :garply, :waldo, :fred, :plugh, :xyzzy, :thud]
MetasyntacticVariable.meta_variables # => [:foo, :bar, :baz, :qux, :quux, :corge, :grault, :garply, :waldo, :fred, :plugh, :xyzzy, :thud]
~~~
* META variable for classes
~~~ruby
MetasyntacticVariable::META_CLASSES # => [:foo, :bar, :baz, :qux, :quux, :corge, :grault, :garply, :waldo, :fred, :plugh, :xyzzy, :thud]
MetasyntacticVariable.meta_classes # => [:foo, :bar, :baz, :qux, :quux, :corge, :grault, :garply, :waldo, :fred, :plugh, :xyzzy, :thud]
~~~
[back to list](#list)
### Module.alias_methods
create alias methods.
~~~ruby
require "tbpgr_utils"
class Hoge
def hoge
"hoge"
end
alias_methods [:hige, :hege, :huge], :hoge
end
Hoge.new.hoge # => "hoge"
Hoge.new.hige # => "hoge"
Hoge.new.hege # => "hoge"
Hoge.new.huge # => "hoge"
~~~
same code is...
~~~
class Hoge
def hoge
"hoge"
end
alias_method :hige, :hoge
alias_method :hege, :hoge
alias_method :huge, :hoge
end
~~~
[back to list](#list)
### Numeric#dice_back
each 1-6 case
~~~ruby
1.dice_back # => return 6
2.dice_back # => return 5
3.dice_back # => return 4
4.dice_back # => return 3
5.dice_back # => return 2
6.dice_back # => return 1
~~~
other case
~~~ruby
7.dice_back # => return 7
~~~
[back to list](#list)
### Numeric#dozen
0,1,2 case
~~~ruby
require 'tbpgr_utils'
0.dozen # => return 0
1.dozen # => return 12
2.dozen # => return 24
~~~
[back to list](#list)
[back to list](#list)
### Numeric#is_ascii?
1,127,128 case
~~~ruby
require 'tbpgr_utils'
1.is_ascii? # => return true
127.is_ascii? # => return true
128.is_ascii? # => return false
~~~
[back to list](#list)
### Numeric to_binary_html_table
[back to list](#list)
~~~ruby
require 'tbpgr_utils'
Numeric.to_binary_html_table(255, 256)
~~~
result
~~~
10digit |
2digit |
255 |
0000000011111111 |
256 |
0000000100000000 |
~~~
[back to list](#list)
### Numeric to_binary_table
1 to 3 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_binary_table(1, 3)
~~~
result
~~~
|10digit|2digit |
|1 |00000001|
|2 |00000010|
|3 |00000011|
~~~
[back to list](#list)
### Numeric to_digit_html_table
255 to 256 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_digit_html_table(255, 256)
~~~
result
~~~html
10digit |
2digit |
8digit |
16digit |
255 |
0000000011111111 |
377 |
00ff |
256 |
0000000100000000 |
400 |
0100 |
~~~
[back to list](#list)
### Numeric to_digit_table
255 to 256 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_digit_table(255, 256)
~~~
result
~~~
|10digit| 2digit|8digit|16digit|
| 255|0000000011111111| 377| 00ff|
| 256|0000000100000000| 400| 0100|
~~~
[back to list](#list)
### Numeric to_hex_html_table
65535 to 65536 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_hex_html_table(65535, 65536)
~~~
result
~~~
10digit |
16digit |
65535 |
0000ffff |
65536 |
00010000 |
~~~
[back to list](#list)
### Numeric to_hex_table
65535 to 65536 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_hex_table(65535, 65536)
~~~
result
~~~
|10digit| 16digit|
| 65535|0000ffff|
| 65536|00010000|
~~~
[back to list](#list)
### Numeric to_oct_html_table
65535 to 65536 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_oct_html_table(65535, 65536)
~~~
result
~~~
10digit |
8digit |
65535 |
177777 |
65536 |
200000 |
~~~
[back to list](#list)
### Numeric to_oct_table
65535 to 65536 case
~~~ruby
require 'tbpgr_utils'
Numeric.to_oct_table(65535, 65536)
~~~
result
~~~
|10digit|8digit|
| 65535|177777|
| 65536|200000|
~~~
[back to list](#list)
### Object#any_of?
~~~ruby
require 'tbpgr_utils'
p 'hoge'.any_of? 'hoge', 'hige' # =>true
p 'hoge'.any_of?(*%w{hoge hige}) # =>true
p 'hige'.any_of? 'hoge', 'hige' # =>true
p 'hege'.any_of? 'hoge', 'hige' # =>false
p 1.any_of? 1, 2, 3 # =>true
p 4.any_of? 1, 2, 3 # =>false
~~~
[back to list](#list)
### Object#boolean?
~~~ruby
require 'tbpgr_utils'
p true.boolean? # =>true
p false.boolean? # =>true
p nil.boolean? # =>false
p "".boolean? # =>false
p "true".boolean? # =>false
~~~
[back to list](#list)
### Object#guard
guard return case
~~~ruby
def hoge(msg)
guard(msg) {return "guard"}
"not guard"
end
hoge true # => "guard"
hoge false # => "not guard"
~~~
guard fail case
~~~ruby
def hoge(msg)
guard(msg) {fail ArgumentError, 'error!!'}
"not guard"
end
hoge true # => raise ArgumentError. message = error!!
hoge false # => "not guard"
~~~
[back to list](#list)
### Object#method_nameable?
~~~ruby
require 'tbpbr_utils'
"string".method_nameable? # => true
:symbol.method_nameable? # => true
1.method_nameable? # => false
~~~
[back to list](#list)
### Object#unless_guard
unless_guard return case
~~~ruby
def hoge(msg)
unless_guard(msg) {return "unless_guard"}
"not unless_guard"
end
hoge false # => "unless_guard"
hoge true # => "not unless_guard"
~~~
unless_guard fail case
~~~ruby
def hoge(msg)
unless_guard(msg) {fail ArgumentError, 'error!!'}
"not unless_guard"
end
hoge false # => raise ArgumentError. message = error!!
hoge true # => "not unless_guard"
~~~
[back to list](#list)
### Object#my_methods
~~~ruby
require 'tbpgr_utils'
class Hoge
def hgoe
end
protected
def hige
end
private
def hege
end
end
p Hoge.new.my_methods # =>[:hoge, :hige, :hege]
~~~
[back to list](#list)
### Object#null?
~~~ruby
hoge = nil
hoge.null? # true
hoge = 'hoge'
hoge.null? # false
~~~
[back to list](#list)
### Object#to_bool
~~~ruby
require 'tbpgr_utils'
p true.to_bool # => true
p false.to_bool # => false
p 'true'.to_bool # => true
p 'false'.to_bool # => true
p nil.to_bool # => false
p 0.to_bool # => true
~~~
[back to list](#list)
### SimpleTournament
init tournament
~~~ruby
require 'simple_tournament'
st = SimpleTournament.new 3
print st.tournament # => [[nil], [nil, nil], [nil, nil]]
~~~
apply challengers
~~~ruby
require 'simple_tournament'
st = SimpleTournament.new 3
st.apply_challengers [*1..3]
print st.tournament # => [[nil], [1, nil], [3, 2]]
~~~
start tournament match
~~~ruby
require 'simple_tournament'
st = SimpleTournament.new 3
st.apply_challengers [*1..3]
st.start_match Proc.new { |one, other|
rets = []
winner = (one > other ? one : other)
rets << winner
rets << "#{one} : #{other} 's winner is #{winner}"
rets
}
print st.tournament # => [[3], [1, 3], [3, 2]]
~~~
[back to list](#list)
### String#ascii1_other2_size
~~~ruby
require 'tbpgr_utils'
'abc'.ord.ascii1_other2_size # => 3
'abc'.ord.ascii1_other2_size # => 6
'aabbcc'.ord.ascii1_other2_size # => 9
~~~
[back to list](#list)
### String#ascii_unicode_html_table
~~~ruby
require 'tbpgr_utils'
'aあb'.ascii_unicode_html_table
~~~
result
~~~
char |
ASCII |
ascii2 |
Unicode |
a |
97 |
1100001 |
-- |
あ |
-- |
-- |
0x3042 |
b |
98 |
1100010 |
-- |
~~~
[back to list](#list)
### String#ascii_unicode_table
~~~ruby
require 'tbpgr_utils'
'aあb'.ascii_unicode_table
~~~
result
~~~
|char|ASCII|ascii2 |Unicode|
| a | 97 |1100001| -- |
| あ | -- | -- |0x3042 |
| b | 98 |1100010| -- |
~~~
[back to list](#list)
### String#comma_to_a
space commma case
~~~ruby
require 'tbpgr_utils'
'1, 5, 9'.comma_to_a # => ["1", "5", "9"]
~~~
commma case
~~~ruby
require 'tbpgr_utils'
'1,5,9'.comma_to_a # => ["1", "5", "9"]
~~~
[back to list](#list)
### String#cygwinpath_to_winpath
~~~ruby
require 'tbpgr_utils'
'/cygdrive/c/hoge/hoge.txt'.cygwinpath_to_winpath # => 'C:\hoge\hoge.txt'
~~~
[back to list](#list)
### String#escape_quote
~~~ruby
require 'tbpgr_utils'
"hoge'hige".escape_quote # => "hoge''hige"
~~~
[back to list](#list)
### String#escape_double_quote
~~~ruby
require 'tbpgr_utils'
'hoge"hige'.escape_double_quote # => 'hoge""hige'
~~~
[back to list](#list)
### String#hyphen_to_a
number case
~~~ruby
require 'tbpgr_utils'
'1-5'.hyphen_to_a # => [1, 2, 3, 4, 5]
~~~
alphabet case
~~~ruby
require 'tbpgr_utils'
'"a"-"e"'.hyphen_to_a # => ['a', 'b', 'c', 'd', 'e']
~~~
[back to list](#list)
### String#is_meta_variable?
~~~ruby
'foo'.is_meta_variable? # => true
'bar'.is_meta_variable? # => true
'baz'.is_meta_variable? # => true
'aaa'.is_meta_variable? # => false
''.is_meta_variable? # => false
~~~
[back to list](#list)
### String#justify_table
~~~ruby
require 'tbpgr_utils'
str =<<-EOS
|* hogehogehoge|* hege|* hige|
|test|tester|testest|
|test|tester|aaaaaaaaaaaaaaaaaaaaaaatestest|
EOS
puts str.justify_table
~~~
output
~~~
|* hogehogehoge|* hage|* hige |
|test |tester|testest |
|test |tester|aaaaaaaaaaaaaaaaaaaaaaatestest|
~~~
[back to list](#list)
### String#say
default case
~~~ruby
'hoge'.say # => 'hoge'
~~~
quote case
~~~ruby
'hoge'.say(:quote) # => 'hoge'
~~~
dquote case
~~~ruby
'hoge'.say(:dquote) # => "hoge"
~~~
bracket case
~~~ruby
'hoge'.say(:bracket) # => [hoge]
~~~
hyphen case
~~~ruby
'hoge'.say(:hyphen) # => -hoge-
~~~
[back to list](#list)
### String#spacing
~~~ruby
require 'tbpgr_utils'
hoge = 'hoge'
hoge.spacing # => 'h o g e'
hoge.spacing({char: '_', size: 2}) # => 'h__o__g__e'
~~~
[back to list](#list)
### String#stripe
default case
~~~ ruby
require 'tbpgr_utils'
'hoge'.stripe # => HoGe
~~~
lower_cap case
~~~ruby
require 'tbpgr_utils'
'hoge'.stripe :lower_cap # => hOgE
~~~
empty case
~~~ruby
require 'tbpgr_utils'
''.stripe # => ''
~~~
nil case
~~~ruby
require 'tbpgr_utils'
hoge = nil
hoge.stripe # => nil
~~~
[back to list](#list)
### String#surround
single line, no option case
~~~ruby
require 'tbpgr_utils'
'hoge'.surround
~~~
result
~~~
------
|hoge|
------
~~~
multi line, no option case
~~~ruby
require 'tbpgr_utils'
"hoge\na".surround
~~~
result
~~~
------
|hoge|
|a |
------
~~~
single line, both option case
~~~ruby
require 'tbpgr_utils'
'hoge'.surround top_bottom: '=', side: '!'
~~~
result
~~~
======
!hoge!
======
~~~
[back to list](#list)
### String#table_to_array
sample case.
~~~ruby
require 'tbpgr_utils'
BEFORE =<<-EOS
|header1|header2 |header3|
|line1_1| line1_2|line1_3|
EOS
BEFORE.table_to_array
~~~
result
~~~ruby
[["header1", "header2", "header3"], ["line1_1", "line1_2", "line1_3"]]
~~~
[back to list](#list)
### String#to_hatena_heading
> case
~~~ruby
require 'tbpgr_utils'
'hoge>hige'.to_hatena_heading # => '*hoge\n**hige'
~~~
\+ case
~~~ruby
require 'tbpgr_utils'
'hoge+hige'.to_hatena_heading # => '*hoge\n*hige'
~~~
^ case
~~~ruby
require 'tbpgr_utils'
'hoge>hige^hege'.to_hatena_heading # => '*hoge\n**hige\n*hege'
~~~
[back to list](#list)
### String#to_markdown_heading
> case
~~~ruby
require 'tbpgr_utils'
'hoge>hige'.to_markdown_heading # => '# hoge\n## hige'
~~~
\+ case
~~~ruby
require 'tbpgr_utils'
'hoge+hige'.to_markdown_heading # => '# hoge\n# hige'
~~~
^ case
~~~ruby
require 'tbpgr_utils'
'hoge>hige^hege'.to_markdown_heading # => '# hoge\n## hige\n# hege'
~~~
[back to list](#list)
### String#to_space2_heading
> case
~~~ruby
require 'tbpgr_utils'
'hoge>hige'.to_space2_heading # => 'hoge\n hige'
~~~
\+ case
~~~ruby
require 'tbpgr_utils'
'hoge+hige'.to_space2_heading # => 'hoge\nhige'
~~~
^ case
~~~ruby
require 'tbpgr_utils'
'hoge>hige^hege'.to_space2_heading # => 'hoge\n hige\nhege'
~~~
[back to list](#list)
### String#to_space4_heading
> case
~~~ruby
require 'tbpgr_utils'
'hoge>hige'.to_space4_heading # => 'hoge\n hige'
~~~
\+ case
~~~ruby
require 'tbpgr_utils'
'hoge+hige'.to_space4_heading # => 'hoge\nhige'
~~~
^ case
~~~ruby
require 'tbpgr_utils'
'hoge>hige^hege'.to_space4_heading # => 'hoge\n hige\nhege'
~~~
[back to list](#list)
### String#to_tab_heading
> case
~~~ruby
require 'tbpgr_utils'
'hoge>hige'.to_tab_heading # => 'hoge\n\thige'
~~~
\+ case
~~~ruby
require 'tbpgr_utils'
'hoge+hige'.to_tab_heading # => 'hoge\nhige'
~~~
^ case
~~~ruby
require 'tbpgr_utils'
'hoge>hige^hege'.to_tab_heading # => 'hoge\n\thige\nhege'
~~~
[back to list](#list)
### String#unescape_double_quote
~~~ruby
require 'tbpgr_utils'
'hoge""hige'.unescape_double_quote # => 'hoge"hige'
~~~
[back to list](#list)
### String#unescape_quote
~~~ruby
require 'tbpgr_utils'
"hoge''h''ige".unescape_quote # => "hoge'h'ige"
~~~
[back to list](#list)
### String#winpath_to_cygwinpath
~~~ruby
require 'tbpgr_utils'
'C:\hoge\hoge.txt'.winpath_to_cygwinpath # => '/cygdrive/c/hoge/hoge.txt'
~~~
[back to list](#list)
### Symbol#is_meta_variable?
~~~ruby
:foo.is_meta_variable? # => true
:bar.is_meta_variable? # => true
:baz.is_meta_variable? # => true
:aaa.is_meta_variable? # => false
~~~
[back to list](#list)
### Templatable
* include Templatable
* set template by here-document
* in template, parameter must name 'placeholders[:xxxxx]'. xxxxx is your favorite name.
* when create instance, you must set materials to create template. after, you can get this value from @materials.
* you must create manufactured_xxx methods. xxx is each-placeholder name.
* you can get result by 'result' method.
~~~ruby
require 'templatable'
class TemplateUser
include Templatable
template <<-EOS
line1:<%=placeholders[:hoge]%>
line2:<%=placeholders[:hige]%>
EOS
def manufactured_hoge
"hoge-#{@materials}"
end
def manufactured_hige
"hige-#{@materials}"
end
end
p TemplateUser.new('sample').result
~~~
output
~~~
line1:hoge-sample
line2:hige-sample
~~~
[back to list](#list)
## TemplateMethodable
sample usage
~~~ruby
require "template_methodable"
# sample BaseClass
class BaseDeveloper
include TemplateMethodable
must_impl :easy_coding, :difficult_coding, :normal_coding
module DIFFICILTY
EASY = 1
NORMAL = 2
DIFFICILT = 3
end
def coding(difficulty)
ret = []
ret << "start coding"
case difficulty
when DIFFICILTY::EASY
ret << easy_coding
when DIFFICILTY::NORMAL
ret << normal_coding
when DIFFICILTY::DIFFICILT
ret << difficult_coding
else
fail 'error'
end
ret << "finish coding"
ret.join("\n")
end
end
# sample valid Concrete Class.
class StarDeveloper < BaseDeveloper
def easy_coding
"complete 1 minutes"
end
def normal_coding
"complete 10 minutes"
end
def difficult_coding
"complete 59 minutes"
end
end
# sample invalid Concrete Class. if call NormalDeveloper#difficult_coding, it raises NotImplementedError.
class NormalDeveloper < BaseDeveloper
def easy_coding
"complete 10 minutes"
end
def normal_coding
"complete 100 minutes"
end
end
~~~
## Relation
if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
https://github.com/tbpgr/tbpgr_utils_snippets
## History
* version 0.0.111 : add MarkdownString#bold
* version 0.0.110 : add MarkdownString#italic
* version 0.0.109 : add MarkdownString#hr
* version 0.0.108 : add MarkdownString#ol
* version 0.0.107 : add MarkdownString#ul
* version 0.0.106 : add MarkdownString#heading3, heading4, heading5, heading6
* version 0.0.105 : add MarkdownString#heading2
* version 0.0.104 : add MarkdownString#heading1. remove File.insert_bom.
* version 0.0.103 : add Integer#palindromic_prime
* version 0.0.102 : add String#cygwinpath_to_winpath
* version 0.0.101 : add String#winpath_to_cygwinpath
* version 0.0.100 : add String#ascii_unicode_html_table
* version 0.0.99 : add Numeric.to_oct_html_table
* version 0.0.98 : add Numeric.to_hex_html_table
* version 0.0.97 : add Numeric.to_digit_html_table
* version 0.0.96 : add Numeric.to_binary_html_table
* version 0.0.95 : add Hash#html_table
* version 0.0.94 : add String#unescape_quote
* version 0.0.93 : add String#unescape_double_quote
* version 0.0.92 : add Fixnum.to_fixnum_html_table
* version 0.0.91 : add Array#to_html_table
* version 0.0.90 : add Kernel#hash_to_attributes
* version 0.0.89 : add String#escape_quote
* version 0.0.88 : add String#escape_double_quote
* version 0.0.87 : add String#spacing
* version 0.0.86 : add Familyable
* version 0.0.85 : add String#table_to_array
* version 0.0.84 : add Fixnum to_fixnum_table
* version 0.0.83 : add Numeric to_digit_table
* version 0.0.82 : add Numeric to_oct_table
* version 0.0.81 : add Numeric to_hex_table
* version 0.0.80 : add Numeric to_binary_table
* version 0.0.79 : add Array#to_table
* version 0.0.78 : add String#ascii_unicode_table
* version 0.0.77 : add String#is_meta_variable?, Symbol#is_meta_variable?
* version 0.0.76 : add EvalHelper#attr_init_class_code, Numeric#is_ascii?, String#ascii1_other2_size
* version 0.0.75 : add Object#method_nameable?
* version 0.0.74 : add Hash#table
* version 0.0.73 : add Kernel#evalb
* version 0.0.72 : add Kernel#null, Object#null?
* version 0.0.71 : add Kernel booleans
* version 0.0.70 : add SimpleTournament
* version 0.0.69 : add Numeric#dozen
* version 0.0.68 : add Numeric#dice_back
* version 0.0.67 : add EvalHelper#attr_accessor_init_code
* version 0.0.66 : add EvalHelper#each_with_index_do_code
* version 0.0.65 : add EvalHelper#each_with_index_brace_code
* version 0.0.64 : add EvalHelper#each_do_code
* version 0.0.63 : add EvalHelper#each_brace_code, String#hyphen_to_a, String#commma_to_a
* version 0.0.62 : add EvalHelper#set_variables_code
* version 0.0.61 : add EvalHelper#set_variable_code
* version 0.0.60 : add EvalHelper#times_code
* version 0.0.59 : add EvalHelper Object
* version 0.0.58 : add EvalHelper#require_relative_code
* version 0.0.57 : add EvalHelper#require_code
* version 0.0.56 : add EvalHelper#toternary_operator
* version 0.0.55 : add EvalHelper#unless_code_after
* version 0.0.54 : add EvalHelper#unless_code
* version 0.0.53 : add EvalHelper#if_code_after
* version 0.0.52 : add EvalHelper#if_code
* version 0.0.51 : add String#to_hatena_heading
* version 0.0.50 : add String#to_markdown_heading
* version 0.0.49 : add String#to_tab_heading
* version 0.0.48 : add String#to_space4_heading
* version 0.0.47 : add String#to_space2_heading
* version 0.0.46 : add String#stripe
* version 0.0.45 : add String#say
* version 0.0.44 : add EndERB.apply
* version 0.0.43 : add Array#together_slice(alias tslice).
* version 0.0.42 : add MetasyntacticVariable
* version 0.0.41 : add Object#guard, unless_guard
* version 0.0.40 : add Kernel#aa_ancestors.
* version 0.0.39 : add String#surround.
* version 0.0.38 : add Array#together_shuffle(alias tshuffle).
* version 0.0.37 : add Array#together_sample(alias tsample).
* version 0.0.36 : add Array#together_reverse,Array#together_reverse!(alias treverse, alias treverse!).
* version 0.0.35 : add Array#together_pop(alias tpop).
* version 0.0.34 : add Array#together_last(alias tlast).
* version 0.0.33 : add Array#together_shift(alias tshift).
* version 0.0.32 : add Array#together_insert(alias tinsert).
* version 0.0.31 : add Array#together_index(alias tindex).
* version 0.0.30 : add Array#together_include?(alias tinclude?).
* version 0.0.29 : add Array#together_first(alias tfirst).
* version 0.0.28 : add Array#together_fill(alias tfill). add File.insert_bom.
* version 0.0.27 : add Array#together_empty?(alias tempty?)
* version 0.0.26 : add Array#together_delete_if(alias tdelete_if)
* version 0.0.25 : add Array#together_delete_at(alias tdelete_at)
* version 0.0.24 : add Array#together_delete(alias tdelete)
* version 0.0.23 : add Array#together_map!(aliases => [tmap!, together_collect!, tcollect!])
* version 0.0.22 : add Array#together_compact. together_compact has alias :tcompact. Array#together_compact!. together_compact! has alias :tcompact!.
* version 0.0.21 : add Array#together_clear. together_clear has alias :tclear
* version 0.0.20 : add Array#together_at. together_at has alias :tat
* version 0.0.19 : add AttributesHashable module.
* version 0.0.18 : add Array#together_concat. together_concat has alias tconcat
* version 0.0.17 : add Array#together_reduce(or treduce, together_inject, tinject)
* version 0.0.16 : add Array#together_select(or tselect, together_find_all, tfindall)
* version 0.0.15 : add Module.alias_methods
* version 0.0.14 : add Array#together_map(aliases => [tmap, together_collect, tcollect])
* version 0.0.13 : add Array#together_with_index, Kernel#bulk_puts_eval
* version 0.0.12 : AttributesInitializable::ClassMethods.attr_reader_init,attr_writer_init
* version 0.0.11 : add Object#to_bool.
* version 0.0.10 : add TemplateMethodable module.
* version 0.0.9 : add TestToolbox module. add Kernel#capture_stdout, Kernel#dp_line
* version 0.0.8 : add Kernel#bulk_define_methods
* version 0.0.7 : add Kernel#print_eval, Kernel#puts_eval
* version 0.0.6 : add Ghostable
* version 0.0.5 : add Templatable
* version 0.0.4 : AttributesInitializable::ClassMethods.attr_accessor_init
* version 0.0.3 : add Object#any_of?
* version 0.0.2 : loop all arrays by block.
* version 0.0.1 : first release.
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request