rrjj 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +84 -0
  3. data/Rakefile +14 -0
  4. data/config/rrjj.rb +35 -0
  5. data/lib/guard_helpers/file_helper.rb +35 -0
  6. data/lib/guard_helpers/opal_helper.rb +27 -0
  7. data/lib/guard_helpers/rails_helper.rb +33 -0
  8. data/lib/guard_helpers/rrjj_helper.rb +45 -0
  9. data/lib/guard_helpers/srt_helper.rb +96 -0
  10. data/lib/rails_handlers/ctrl_handler.rb +7 -0
  11. data/lib/ro_commands/check.rb +16 -0
  12. data/lib/ro_commands/model.rb +24 -0
  13. data/lib/ro_commands/post_handler.rb +85 -0
  14. data/lib/ro_commands/rails_base.rb +27 -0
  15. data/lib/ro_commands/rails_shortcuts.rb +18 -0
  16. data/lib/ro_commands/ro_proc.rb +8 -0
  17. data/lib/ro_core_ext/object.rb +11 -0
  18. data/lib/ro_html_handler.rb +8 -0
  19. data/lib/rrjj.rb +18 -0
  20. data/lib/rrjj/cmd.rb +7 -0
  21. data/lib/rrjj/cmds.rb +42 -0
  22. data/lib/rrjj/railtie.rb +13 -0
  23. data/lib/rrjj/ro_faker.rb +10 -0
  24. data/lib/rrjj/version.rb +3 -0
  25. data/lib/rrjj_ro_commands_bin.rb +4 -0
  26. data/lib/rubymine_heaven.rb +2 -0
  27. data/lib/rubymine_heaven/linkable_errors.rb +56 -0
  28. data/lib/rubymine_heaven/linkable_errors_handler.rb +31 -0
  29. data/lib/rubymine_heaven/linkable_errors_railtie.rb +21 -0
  30. data/lib/subtitle.rb +149 -0
  31. data/lib/subtitles/ex.srt +5 -0
  32. data/lib/templates/alias.erb +3 -0
  33. data/lib/templates/srt.erb +4 -0
  34. data/spec/controllers/app_controller_spec.rb +12 -0
  35. data/spec/decorators/app_decorator_spec.rb +4 -0
  36. data/spec/decorators/post_decorator_spec.rb +38 -0
  37. data/spec/features/posts/index_spec.rb +9 -0
  38. data/spec/features/posts/search_spec.rb +10 -0
  39. data/spec/fixtures/handler/error_page.html +1 -0
  40. data/spec/fixtures/handler/result.html +1 -0
  41. data/spec/fixtures/post_handler/posts/error/test.md +1 -0
  42. data/spec/fixtures/post_handler/posts/rails/test.html +0 -0
  43. data/spec/fixtures/post_handler/tmp/rspec_guard_result +1 -0
  44. data/spec/fixtures/rails_navigate/app/controllers/app_controller.rb +0 -0
  45. data/spec/fixtures/rails_navigate/app/controllers/one_controller.rb +0 -0
  46. data/spec/fixtures/rails_navigate/app/controllers/two_controller.rb +0 -0
  47. data/spec/fixtures/rails_navigate/app/decorators/two_decorator.rb +0 -0
  48. data/spec/fixtures/rails_navigate/app/models/two_model.rb +0 -0
  49. data/spec/fixtures/rails_navigate/opal_lib/path/to/file.rb +0 -0
  50. data/spec/fixtures/rails_navigate/opal_lib/path/to/file2.rb +0 -0
  51. data/spec/fixtures/try/origin/ex.erb.ogv +0 -0
  52. data/spec/helpers/app_helper_spec.rb +15 -0
  53. data/spec/helpers/posts_helper_spec.rb +15 -0
  54. data/spec/lib/guard_helpers/rails_helper_spec.rb +1 -0
  55. data/spec/lib/guard_helpers/ro_helper_spec.rb +23 -0
  56. data/spec/lib/guard_helpers/srt_helper_spec.rb +18 -0
  57. data/spec/lib/ro_cells/opal_spec.rb +40 -0
  58. data/spec/lib/ro_commands/check_spec.rb +21 -0
  59. data/spec/lib/ro_commands/post_handler_spec.rb +0 -0
  60. data/spec/lib/ro_commands/rails_navigate_spec.rb +47 -0
  61. data/spec/lib/rubymine_heaven/linkable_errors_railtie_spec.rb +2 -0
  62. data/spec/lib/srt_helper_spec.rb +5 -0
  63. data/spec/lib/subtitle_spec.rb +46 -0
  64. data/spec/lib/templates/srt_spec.rb +2 -0
  65. data/spec/lib/video_spec.rb +34 -0
  66. data/spec/models/ln_spec.rb +5 -0
  67. data/spec/models/post_spec.rb +8 -0
  68. data/spec/models/sub_spec.rb +5 -0
  69. data/spec/models/tag_spec.rb +5 -0
  70. data/spec/models/try_spec.rb +5 -0
  71. data/spec/requests/posts_spec.rb +11 -0
  72. data/spec/routing/posts_routing_spec.rb +35 -0
  73. data/spec/spec_helper.rb +79 -0
  74. data/spec/views/app/search.html.erb_spec.rb +5 -0
  75. metadata +227 -0
@@ -0,0 +1,27 @@
1
+ root_path = if defined? ::Rails
2
+ ::Rails.root
3
+ else
4
+ Dir.pwd
5
+ end
6
+
7
+ env_path = File.join(root_path, "config/environment")
8
+
9
+ if File.exist?(env_path)
10
+ require env_path
11
+ end
12
+ require File.expand_path('../../../config/rrjj', __FILE__)
13
+
14
+ require 'celluloid'
15
+
16
+ module RoCommands
17
+ class RailsBase < Base
18
+ protected
19
+
20
+ def template(from, to)
21
+ template_path = File.join(::Rrjj.lib, 'templates')
22
+ ctn = ::RoFile.read(File.join(template_path, "#{from}.erb"))
23
+ result = ERB.new(ctn).result(binding)
24
+ ::RoFile.write(to, result)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,18 @@
1
+ require_relative 'rails_base'
2
+ module RoCommands
3
+ class RailsShortcuts < Shortcuts
4
+ desc usage('open_file'), ''
5
+
6
+ def open_file(file)
7
+ bash "#{Rrjj.default_editor} #{file}"
8
+ end
9
+
10
+ desc usage("work"), ""
11
+ def work(*args)
12
+ bx "zeus start"
13
+ bx 'rails s'
14
+ bx "guard -P livereload"
15
+ bx "guard -P rspec"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+ module ::RoCommands
2
+ class RoProc < Base
3
+ desc usage('kill'), ''
4
+ def kill(*args)
5
+ bash "kill -9 `cat #{File.join(::Rails.root, 'tmp/pids/server.pid`')}"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ Object.class_eval do
2
+ def have_value?
3
+ result = nil
4
+ if self.respond_to?(:blank?)
5
+ result = !self.blank?
6
+ elsif self.respond_to?(:empty?)
7
+ result = !self.empty?
8
+ end
9
+ result
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ module RoHtmlHandler
2
+ def doc(html)
3
+ doc = ::Nokogiri::HTML.parse(html)
4
+ if block_given?
5
+ yield doc
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path('../../config/rrjj', __FILE__)
2
+
3
+ module Rrjj
4
+
5
+ end
6
+
7
+ module RoCells
8
+
9
+ end
10
+
11
+ module GuardHelpers
12
+
13
+ end
14
+
15
+ ::Rrjj.autoload_all('rrjj')
16
+ ::Rrjj.autoload_all("ro_cells")
17
+ ::Rrjj.autoload_all("ro_commands")
18
+ ::Rrjj.autoload_all("guard_helpers")
@@ -0,0 +1,7 @@
1
+ require 'ro_helper'
2
+
3
+ module ::Rrjj
4
+ class Cmd < RoHelper::Cmd
5
+
6
+ end
7
+ end
@@ -0,0 +1,42 @@
1
+ require_relative 'cmd'
2
+ module ::Rrjj
3
+ class Cmds
4
+ class << self
5
+ def all
6
+ zeus('zro', 'ro')
7
+ zeus('a', 'rails_navigate access')
8
+ zeus('la', 'rails get_assets')
9
+ zeus('lc', 'rails get_controllers')
10
+ zeus('lmo', 'rails get_models')
11
+ zeus('lm', 'rails get_migrations')
12
+ zeus('lsc', 'rails get_scaffolds')
13
+
14
+ zro('schema', 'check schema')
15
+ zro('table', 'check table')
16
+
17
+ zrk('routes', 'routes')
18
+ all_shortcuts
19
+ end
20
+
21
+ def zeus(shortcut_name, bash)
22
+ all_shortcuts << Cmd.new(shortcut_name, "zeus #{bash}")
23
+ end
24
+
25
+ def zro(shortcut_name, bash)
26
+ all_shortcuts << Cmd.new(shortcut_name, "zeus ro #{bash}")
27
+ end
28
+
29
+ def zrk(shortcut_name, bash)
30
+ all_shortcuts << Cmd.new(shortcut_name, "zeus rake #{bash}")
31
+ end
32
+
33
+ attr_accessor :all_shortcuts
34
+
35
+ def all_shortcuts
36
+ @all_shortcuts.flatten! if defined?(@all_shortcuts) and @all_shortcuts.respond_to?(:flatten!)
37
+ @all_shortcuts.uniq! if defined?(@all_shortcuts) and @all_shortcuts.respond_to?(:uniq!)
38
+ @all_shortcuts ||= []
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,13 @@
1
+ module Rrjj
2
+ class Railtie < Rails::Railtie
3
+ initializer "rorojiang runtime config" do |app|
4
+ require 'rrjj'
5
+ require_relative 'cmd'
6
+ require_relative 'cmds'
7
+
8
+ ::Rrjj.require_all("guard_helpers")
9
+ ::Rrjj.require_all("ro_commands")
10
+ require 'ro_html_handler'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module RoFaker
2
+ class << self
3
+ def post(attrs={})
4
+ attrs[:title] ||= sentence
5
+ attrs[:content] ||= paras
6
+
7
+ Post.create(attrs)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ module Rrjj
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,4 @@
1
+ require_relative 'rrjj'
2
+ require 'ro_helpers/ro_bin_helper'
3
+
4
+ ::RoBinHelper.set_ro_commands_file_map(::Rrjj.root)
@@ -0,0 +1,2 @@
1
+ require "rubymine_heaven/linkable_errors"
2
+ require "rubymine_heaven/linkable_errors_railtie"
@@ -0,0 +1,56 @@
1
+ require 'ro_rails_helpers'
2
+
3
+ module RubymineHeaven
4
+ module LinkableErrors
5
+
6
+ def self.included(base)
7
+ base.class_eval do
8
+
9
+ private
10
+
11
+ def link_to_code(text)
12
+ ::RoRailsHelpers::Handler.link_to_code(text)
13
+ # we must create new String, because SafeBuffer#gsub don't set $1, $2, ... variables !!
14
+ #String.new(text).gsub(/(\/?[\w\/\.@-]+)\:(\d+)/) do |match|
15
+ # file = $1 || "file??"
16
+ # line = $2 || "line-no??"
17
+ # file = Rails.root + file if file =~ Rails::BacktraceCleaner::APP_DIRS_PATTERN
18
+ # "<a href='x-mine://open?file=#{file}&line=#{line}'>#{match}</a>"
19
+ #end
20
+ end
21
+
22
+ def render_exception(env, exception)
23
+
24
+ begin
25
+ wrapper = ActionDispatch::ExceptionWrapper.new(env, exception)
26
+ log_error(env, wrapper)
27
+
28
+ if env['action_dispatch.show_detailed_exceptions']
29
+ template = ActionView::Base.new(\
30
+ [::ActionDispatch::DebugExceptions::RESCUES_TEMPLATE_PATH],
31
+ :request => ActionDispatch::Request.new(env),
32
+ :exception => wrapper.exception,
33
+ :application_trace => wrapper.application_trace,
34
+ :framework_trace => wrapper.framework_trace,
35
+ :full_trace => wrapper.full_trace
36
+ )
37
+
38
+ file = "rescues/#{wrapper.rescue_template}"
39
+ body = template.render(:template => file, :layout => 'rescues/layout')
40
+ body = link_to_code(body)
41
+
42
+ render(wrapper.status_code, body)
43
+ else
44
+ raise exception
45
+ end
46
+ rescue => e
47
+ ::Rails.logger.error e
48
+ e.backtrace.each do |b|
49
+ ::Rails.logger.error b
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,31 @@
1
+ require 'ro_helpers'
2
+ Out.say_status("set", " $root and $lib #{::File.basename __FILE__}, #{__LINE__}")
3
+
4
+ require 'active_support/core_ext'
5
+
6
+ module LinkableErrorsHandler
7
+ class << self
8
+ def link_to_code(text)
9
+ text.scan(regexp).each do |part|
10
+ path = part[0]
11
+ line = part[1]
12
+ text.gsub! "#{path}:#{line}", handle_part(path, line)
13
+ end
14
+ text
15
+ end
16
+
17
+ def regexp
18
+ @regexp ||= %r{((?<path>/.*?\.rb)\:(?<line>\d+)\:in)}
19
+ end
20
+
21
+ def handle_part(path, line)
22
+ href = File.join("/rodebug/start", path, line)
23
+ anchor_text = "#{path}:#{line}"
24
+ result = "<a href='http://localhost:3000#{href}'>#{anchor_text}</a>"
25
+ end
26
+
27
+ def handle_path(path)
28
+ path.gsub(%r{/}, "$").gsub(%r{^$}, "")
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module RubymineHeaven
2
+ class LinkableErrorsRailtie < ::Rails::Railtie
3
+ initializer "linkable_errors_railtie.boot" do
4
+ if Rails.env.development?
5
+ Rails.backtrace_cleaner.remove_filters!
6
+ Rails.backtrace_cleaner.add_filter { |line| line.sub("#{Rails.root}/", '') }
7
+ # point links on rails error pages to rubymine
8
+ ActionDispatch::DebugExceptions.send(:include, LinkableErrors)
9
+
10
+ # point footnotes links to rubymine
11
+ if defined?(Footnotes)
12
+ Footnotes::Filter.prefix = 'x-mine://open?url=%s&line=%d'
13
+ end
14
+ end
15
+ end
16
+
17
+ generator "rails_debug_navigator" do
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,149 @@
1
+ class Subtitle
2
+ class << self
3
+ def handle_time(time)
4
+ reset
5
+ time = time.to_s
6
+ @hour = time[-6..-5] if time.length >= 6
7
+ @min = time[-4..-3] if time.length >= 4
8
+ @sec = time[-2..-1] if time.length >= 2
9
+ start_time = "#{hour}:#{min}:#{sec}"
10
+ end_time = "#{hour}:#{min}:#{sec.to_i+10}"
11
+ return start_time, end_time
12
+ end
13
+
14
+ def handle_content(ctn)
15
+ ctn.gsub(%r{(^\s+)|(\s+$)}, "")
16
+ end
17
+
18
+ def hex2rgb(hexadecimal)
19
+ deleted_signs = %r{#|0x}
20
+
21
+ hex = hex2s(hexadecimal)
22
+
23
+ if hex.match(deleted_signs)
24
+ hex.gsub!(deleted_signs, "")
25
+ end
26
+
27
+ hex_arr = hex.split("")
28
+ rgb = []
29
+ r = hex2decimal hex_arr[0..1].join
30
+ g = hex2decimal hex_arr[2..3].join
31
+ b = hex2decimal hex_arr[4..5].join
32
+
33
+ [r, g, b].map(&:to_i)
34
+ #if hex.match(%r{#})
35
+ # hex.gsub(%r{#}, "")
36
+ #end
37
+ #
38
+ #rgb = {}
39
+ #%w(r g b).inject(hex) do |rest, i|
40
+ # rest, rgb[i] = rest.divmod 256
41
+ # rest
42
+ #end
43
+ end
44
+
45
+ def rgb2hex(r, g, b)
46
+ hex = [r, g, b].map do |e|
47
+ format_value(decimal2hex(e))
48
+ end
49
+ "#" + hex.join
50
+ end
51
+
52
+ private
53
+
54
+ def format_value(value)
55
+ if value.length == 1
56
+ "0#{value}"
57
+ else
58
+ value
59
+ end
60
+ end
61
+
62
+ def decimal2hex(decimal)
63
+ hex = []
64
+ rest = decimal
65
+ begin
66
+ rest, remainder= rest.divmod 16
67
+ hex << translate(remainder)
68
+ end until rest == 0
69
+ hex.join
70
+ end
71
+
72
+ def hex2s(hex)
73
+ if hex.is_a? Fixnum
74
+ hex.to_s
75
+ else
76
+ hex
77
+ end
78
+ end
79
+
80
+ def hex2decimal(hexadecimal)
81
+ hex = hex2s(hexadecimal)
82
+ if hex.is_a? Fixnum
83
+ hex = hex.to_s
84
+ end
85
+
86
+ if hex.match(%r{#})
87
+ hex.gsub(%r{#}, "")
88
+ end
89
+
90
+ translate = {}
91
+ hex_arr = hex.to_s.split("")
92
+ len = hex_arr.length
93
+
94
+ hex_arr.each_with_index do |e, index|
95
+ place = len.to_i - index - 1
96
+ translate[place] = translate(e)
97
+ end
98
+
99
+ decimal = 0
100
+ translate.each do |place, e|
101
+ decimal += e.to_i*16**place
102
+ end
103
+ decimal
104
+ end
105
+
106
+ def power(base_num, index_num)
107
+ eval [base_num]*index_num.join("*")
108
+ end
109
+
110
+ def translate(value)
111
+ result = value
112
+ dict.each do |hex, decimal|
113
+ if decimal == value
114
+ result = hex.to_s
115
+ break
116
+ end
117
+
118
+ if hex.to_s == value
119
+ result = decimal
120
+ break
121
+ end
122
+ end
123
+
124
+ result
125
+ end
126
+
127
+ def dict
128
+ {a: 10, b: 11, c: 12, d: 13, e: 14, f: 15}
129
+ end
130
+
131
+ def reset
132
+ instance_variables.each do |iv|
133
+ instance_variable_set iv, nil
134
+ end
135
+ end
136
+
137
+ def hour
138
+ @hour ||= "00"
139
+ end
140
+
141
+ def min
142
+ @min ||= "00"
143
+ end
144
+
145
+ def sec
146
+ @sec ||= "00"
147
+ end
148
+ end
149
+ end