rubyjs-vite 1.0.2 → 1.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d8be56a5cd62d9c0cc4751a44ea778fbee3dabead90381f28e3d8664c2266f3
4
- data.tar.gz: d4af48e85e48a5deef17f59620e9a558930b463fc5b33338daeb04cdde15d5ee
3
+ metadata.gz: a31e0e75faaeba2ed338cacc961aa931983d8c5d0b05952dcc11da4db3845ffb
4
+ data.tar.gz: a78a09246f00a73615405922aca8b6bdcecb6b51e72485fe87fef8e2c15c3a71
5
5
  SHA512:
6
- metadata.gz: ad86cf0733735f3cd6290881c9dff9b247459035801e46b82f8d1660f6bdb59c13a8b83b1027c6f14ee0358b8b9825dca646ee93cfe24c333100ab8f2a3f1de0
7
- data.tar.gz: 63c92ff729d76d0ea5d55df1712e4731f06c944ecedd58e9723e71f1f26b7cccc00289932a87b2e8a1b0cd50fd16b67a45b0d1be3cc17e47784b4674d13afa48
6
+ metadata.gz: 4283995ad07250069d1641ea613206df45d7b5ded6a4cfb1e5847abf3d5aff2bc48194edf7f4c00f1cddacb584da47de0e21158403e15ca776b8db0be03c24dd
7
+ data.tar.gz: 7490c439c8e2626708ea9ad8808787ca31b1e88c760fce91609b35e34fc14ba50a178e496bb4f7780d5790a46a29f19a817ce00efce21d900a1aad0b7dd0bad5
data/app/arguments.rb CHANGED
@@ -2,6 +2,7 @@ require "option_parser"
2
2
 
3
3
  @options = {
4
4
  compile: false,
5
+ generate: false,
5
6
  watch: false,
6
7
  output: Dir.pwd,
7
8
  source: Dir.pwd,
@@ -22,11 +23,14 @@ OptionParser.parse do |parser|
22
23
  puts "Version is #{RubyJS::VERSION}"
23
24
  exit
24
25
  end
26
+ parser.on( "-w", "--watch", "Watch scripts for changes and rerun commands." ) do
27
+ @options[:watch] = true
28
+ end
25
29
  parser.on( "-c", "--compile", "Compile to JavaScript and save as .js files." ) do
26
30
  @options[:compile] = true
27
31
  end
28
- parser.on( "-w", "--watch", "Watch scripts for changes and rerun commands." ) do
29
- @options[:watch] = true
32
+ parser.on( "-g", "--generate", "Copies every rjs file into a single rjs file." ) do
33
+ @options[:generate] = true
30
34
  end
31
35
  parser.on("-o DIR", "--output DIR", "Set the output path or path/filename\n" +
32
36
  "for compiled JavaScript." ) do |dir|
data/app/main.rb CHANGED
@@ -15,10 +15,22 @@ def compile path_f
15
15
  if @options[:compile]
16
16
  compile_fun(path_f)
17
17
  else
18
- puts "This '#{path_f}' file was edited, but it wasn't made into a js file."
18
+ puts RubyJS::Helper.event_p("warning", "This '#{path_f}' file was edited, " +
19
+ "but it wasn't made into a js file.")
19
20
  end
20
21
  end
21
22
 
23
+ def generate
24
+ if @options[:generate]
25
+ path_s = @options[:source]
26
+ code_j = RubyJS.generate_cj path_s
27
+ return code_j.get_ignore_r
28
+ end
29
+
30
+ return RubyJS::CodeJoin::TEST_N
31
+ end
32
+ ignore_cjfs = generate()
33
+
22
34
  if @options[:compile]
23
35
  RubyJS.get_files(@options[:source]).each do |path_f|
24
36
  compile_fun(path_f)
@@ -26,11 +38,13 @@ if @options[:compile]
26
38
  end
27
39
 
28
40
  if @options[:watch]
29
- puts "There is now a watch for edited files."
41
+ puts RubyJS::Helper.event_p("message", "There is now a watch for edited files.")
30
42
  path_s = @options[:source]
31
43
 
32
44
  RubyJS::Helper.create_dir(path_s)
33
- RubyJS.watch path_s do |modified, added, removed|
45
+ RubyJS.watch path_s, ignore_cjfs do |modified, added, removed|
46
+ generate()
47
+
34
48
  unless added.empty?
35
49
  compile(added.last)
36
50
  end
data/lib/json_parser.rb CHANGED
@@ -11,7 +11,7 @@ class JsonParser
11
11
  end
12
12
 
13
13
  def on symbol, value
14
- if exist?
14
+ unless @db.include?(symbol.to_s)
15
15
  parse symbol, value
16
16
  end
17
17
  end
@@ -0,0 +1,117 @@
1
+ require "json_parser"
2
+
3
+ module RubyJS
4
+ FileS = Struct.new :path, :content, :class_rid
5
+
6
+ class CodeJoin
7
+ FILE_N = "FILE_N"
8
+ TEST_N = "test.rjs"
9
+ FILE_HN = ".codejoin"
10
+
11
+ attr_reader :json_cj
12
+
13
+ def initialize path_s
14
+ @files = []
15
+
16
+ @json_cj = JsonParser.new File.join(path_s, FILE_HN)
17
+ @json_cj.on :name, "project"
18
+ @json_cj.on :ignore, ["#{FILE_N}_.*.rjs", TEST_N]
19
+ end
20
+
21
+ def add_file path_f
22
+ content = File.open(path_f).read
23
+ i_c = content.index /class/
24
+ i_n = content.index(/\n/, i_c) if i_c
25
+ @files << FileS.new(path_f, content, [i_c, i_n])
26
+ end
27
+
28
+ def get_ignore_r
29
+ result = ""
30
+ @json_cj.parse(:ignore).each do |i|
31
+ result << i.sub(/#{FILE_N}/, @json_cj.parse(:name).downcase.gsub(' ', '_')).concat("$|")
32
+ end
33
+ return result.sub(/\|$/, '')
34
+ end
35
+
36
+ def get_pos_class
37
+ files_ch = {}
38
+ files_nc = []
39
+ @files.each do |f|
40
+ if f.class_rid[0]
41
+ r_class = f.content[f.class_rid[0], f.class_rid[1] - f.class_rid[0]]
42
+ r_class_s = r_class.split(' ')
43
+ _class = r_class_s[1]
44
+ _super = r_class_s[3]
45
+
46
+ files_ch[_class] = _super
47
+ else
48
+ files_nc << f
49
+ end
50
+ end
51
+
52
+ files_c = []
53
+ extends_pos_class(files_ch).each do |c|
54
+ @files.each do |f|
55
+ if f.class_rid[0]
56
+ r_class = f.content[f.class_rid[0], f.class_rid[1] - f.class_rid[0]]
57
+ if r_class.index("class #{c}")
58
+ files_c << f
59
+ break
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ return files_c + files_nc
66
+ end
67
+
68
+ def extends_pos_class hash
69
+ fe_arr = []
70
+ fa_arr = []
71
+ hash.each do |c, e|
72
+ if e
73
+ arr_c = [c, e]
74
+ def e_loop hash, key
75
+ k = hash.dig(key)
76
+ if k
77
+ yield k
78
+ e_loop(hash, k) do |kk|
79
+ yield kk
80
+ end
81
+ end
82
+ end
83
+ e_loop(hash, e) do |k|
84
+ arr_c << k
85
+ end
86
+
87
+ arr_c.pop
88
+ fe_arr << arr_c.reverse
89
+ else
90
+ fa_arr << c
91
+ end
92
+ end
93
+
94
+ fe_arr_u = fe_arr.group_by{|x|x[1]}.values.map(&:last).reverse
95
+ return fa_arr.clone.concat(fe_arr_u).to_s.gsub(/[\[\]\"]/, '').split(', ')
96
+ end
97
+
98
+ def to_s
99
+ result = ""
100
+ # " * Module Description" +
101
+ # " *" +
102
+ # " * @version #{}" +
103
+ # " * @date #{}" +
104
+ # " * @author #{}" +
105
+ # " * @remarks #{}" +
106
+ # " * @github #{}" +
107
+ # " */"
108
+
109
+ get_pos_class.each do |f_s|
110
+ content_e = f_s.content.gsub(/import.*\n/, '').gsub('export ', '').gsub('default ', '')
111
+ content_en = content_e[content_e.length - 1] == "\n" ? content_e : content_e.concat("\n")
112
+ result << content_en
113
+ end
114
+ return result
115
+ end
116
+ end
117
+ end
@@ -23,8 +23,12 @@ module RubyJS
23
23
  file.close
24
24
  end
25
25
 
26
- def self.free path_o
27
- File.delete(path_o) if File.exists? path_o
26
+ def self.free path_fro
27
+ # File
28
+ File.delete(path_fro) if File.exists? path_fro
29
+ # Dir
30
+ path_dro = File.dirname(path_fro)
31
+ Dir.delete(path_dro) if Dir.empty? path_dro
28
32
  end
29
33
 
30
34
  def self.event_p event, path_f
@@ -12,6 +12,9 @@ module RubyJS
12
12
  json_oc = JsonParser.new File.join(path_ao, "package.json")
13
13
  json_oc.parse :name, project.downcase
14
14
 
15
+ json_cj = JsonParser.new File.join(path_ao, ".codejoin")
16
+ json_cj.parse :name, project.downcase
17
+
15
18
  change_watch_f(path_ao)
16
19
  install_vite(project, path_ao)
17
20
  end
@@ -1,3 +1,3 @@
1
1
  module RubyJS
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.4"
3
3
  end
data/lib/ruby_js.rb CHANGED
@@ -8,9 +8,10 @@ module RubyJS
8
8
  require "ruby_js/helper"
9
9
  require "ruby_js/constants"
10
10
  require "ruby_js/scaffold"
11
+ require "ruby_js/code_join"
11
12
 
12
- def self.watch path
13
- listener = Listen.to(path, only: /\.#{Constants::FILE_TYPE}$/) do |modified, added, removed|
13
+ def self.watch path, ignore = ""
14
+ listener = Listen.to(path, only: /\.#{Constants::FILE_TYPE}$/, ignore: /#{ignore}/) do |modified, added, removed|
14
15
  yield modified, added, removed
15
16
  end
16
17
  listener.start
@@ -32,6 +33,30 @@ module RubyJS
32
33
  end
33
34
  end
34
35
 
36
+ def self.generate_cj path_s
37
+ path_hfd = path_s
38
+ unless File.exist?(File.join(path_s, CodeJoin::FILE_HN))
39
+ path_hfd = ROOT
40
+ end
41
+
42
+ code_join = CodeJoin.new path_hfd
43
+ get_files(path_s).each do |path_f|
44
+ unless path_f.index(/#{code_join.get_ignore_r}/)
45
+ code_join.add_file(path_f)
46
+ end
47
+ end
48
+
49
+ content_join = code_join.to_s
50
+
51
+ name_f = "#{code_join.json_cj.parse(:name).downcase.gsub(' ', '_')}_" +
52
+ "#{Time.now.strftime("%ya%m%d")}.#{Constants::FILE_TYPE}"
53
+ path_f = File.join(path_s, name_f)
54
+ RubyJS::Helper.write(path_f, content_join)
55
+ puts Helper.event_p("generated", path_f)
56
+
57
+ return code_join
58
+ end
59
+
35
60
  def self.free path_f, options
36
61
  path_o = Helper.absolute_path path_f, options
37
62
  Helper.free path_o
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyjs-vite
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Filip Vrba
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-09 00:00:00.000000000 Z
11
+ date: 2022-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby2js
@@ -38,12 +38,8 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.7'
41
- description: |-
42
- Web applications may be made with the help of RubyJS Vite. The programmer can avoid using JS syntax, which is helpful. Everything is done automatically; all you have to do is start the server and build a project using scaffolding.
43
-
44
- Write your code using the JS api and Ruby syntax, and the server will automatically translate it. It then stores it in a file with the extension ".js". You will then be able to publish the project to [Vercel](https://vercel.com/) or directly to the [NPM package](https://www.npmjs.com/), and you will have a website that is written in the native JS language.
45
-
46
- See GitHub for further information. |> https://github.com/filipvrba/ruby-js
41
+ description: Using this translation tool, you can run Vite server and write code in
42
+ Ruby syntax using JS API. See GitHub for further information. |> https://github.com/filipvrba/ruby-js
47
43
  email: filipvrbaxi@gmail.com
48
44
  executables:
49
45
  - rjsv
@@ -59,6 +55,7 @@ files:
59
55
  - lib/json_parser.rb
60
56
  - lib/option_parser.rb
61
57
  - lib/ruby_js.rb
58
+ - lib/ruby_js/code_join.rb
62
59
  - lib/ruby_js/constants.rb
63
60
  - lib/ruby_js/helper.rb
64
61
  - lib/ruby_js/scaffold.rb
@@ -90,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
87
  - !ruby/object:Gem::Version
91
88
  version: '0'
92
89
  requirements: []
93
- rubygems_version: 3.4.0.dev
90
+ rubygems_version: 3.3.7
94
91
  signing_key:
95
92
  specification_version: 4
96
93
  summary: Converts the syntax of ruby into javascript.