pyru 0.1.0
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 +7 -0
- data/lib/pyru.rb +8 -0
- data/lib/pyru_compiler.rb +14 -0
- data/lib/pyru_examples.rb +29 -0
- data/lib/pyru_lexer.rb +32 -0
- data/lib/pyru_parser.rb +15 -0
- data/lib/pyru_python_bridge.rb +26 -0
- data/lib/pyru_ruby_bridge.rb +33 -0
- metadata +162 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 761974aaa8c642be06a7175aed03eaca3f73b959e9c4ebe24837794e648d8253
|
4
|
+
data.tar.gz: 1f1f12d36f52863d6a84c09571ca90a93f44f1a6c03636224af99468155d4ceb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb9a19bf1e05e0cd1c53d2da85166cafe47086e1244112d517c38e00a20f689dd9b1cae39800aa901b2bc12afd9f0dbe8817d5c0cc4df2444082513faf344f9d
|
7
|
+
data.tar.gz: d8f3dc017ece04da33b8a5af9005a0d8f5693981c4e04fadd394d1f717d8ecfcc9743785fd6d474bd6c32714ed8582f5489e264fcde74a350ac676265898bd1d
|
data/lib/pyru.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# pyru_compiler.rb
|
2
|
+
|
3
|
+
class PyruCompiler
|
4
|
+
def initialize(ast)
|
5
|
+
@ast = ast
|
6
|
+
end
|
7
|
+
|
8
|
+
def compile
|
9
|
+
# Placeholder for compilation logic
|
10
|
+
# You can translate the AST into executable code
|
11
|
+
# For simplicity, let's just return the AST as is for now
|
12
|
+
@ast
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# pyru_examples.rb
|
2
|
+
|
3
|
+
# Require the pyru_ruby_bridge gem
|
4
|
+
require 'pyru_ruby_bridge'
|
5
|
+
|
6
|
+
# Example method to demonstrate calling a Pyru method using the bridge module
|
7
|
+
def call_pyru_method
|
8
|
+
begin
|
9
|
+
# Call the Pyru method using the RubyBridge class
|
10
|
+
result = PyruRubyBridge::RubyBridge.some_pyru_method("example_argument")
|
11
|
+
|
12
|
+
# Print the result
|
13
|
+
puts "Result from Pyru method: #{result}"
|
14
|
+
rescue PyruRubyBridge::PyruException => e
|
15
|
+
# Handle Pyru exceptions raised by the bridge module
|
16
|
+
puts "Pyru exception caught: #{e.message}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Main method
|
21
|
+
def main
|
22
|
+
# Call the example method to demonstrate calling a Pyru method
|
23
|
+
call_pyru_method
|
24
|
+
end
|
25
|
+
|
26
|
+
# Entry point of the script
|
27
|
+
if __FILE__ == $0
|
28
|
+
main
|
29
|
+
end
|
data/lib/pyru_lexer.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# pyru_lexer.rb
|
2
|
+
|
3
|
+
class PyruLexer
|
4
|
+
def initialize(code)
|
5
|
+
@code = code
|
6
|
+
@position = 0
|
7
|
+
@tokens = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def tokenize
|
11
|
+
while @position < @code.length
|
12
|
+
case @code[@position]
|
13
|
+
when /\s/
|
14
|
+
# Skip whitespace
|
15
|
+
@position += 1
|
16
|
+
when /[a-zA-Z]/
|
17
|
+
# Identify identifiers
|
18
|
+
identifier = ''
|
19
|
+
while @code[@position] =~ /[a-zA-Z0-9_]/
|
20
|
+
identifier += @code[@position]
|
21
|
+
@position += 1
|
22
|
+
end
|
23
|
+
@tokens << { type: :IDENTIFIER, value: identifier }
|
24
|
+
# Add other token types and their respective cases as needed
|
25
|
+
else
|
26
|
+
# Skip unknown characters
|
27
|
+
@position += 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
@tokens
|
31
|
+
end
|
32
|
+
end
|
data/lib/pyru_parser.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# pyru_parser.rb
|
2
|
+
|
3
|
+
class PyruParser
|
4
|
+
def initialize(tokens)
|
5
|
+
@tokens = tokens
|
6
|
+
@position = 0
|
7
|
+
end
|
8
|
+
|
9
|
+
def parse
|
10
|
+
# Placeholder for parsing logic
|
11
|
+
# You can define grammar rules and parse the tokens accordingly
|
12
|
+
# For simplicity, let's just return the tokens for now
|
13
|
+
@tokens
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# pyrupythonbridge.rb
|
2
|
+
|
3
|
+
module PyruPythonBridge
|
4
|
+
class PythonBridge
|
5
|
+
def self.call_python_function
|
6
|
+
begin
|
7
|
+
# Call the actual Python function here
|
8
|
+
result = SomePythonModule.some_python_function # Placeholder for calling Python function
|
9
|
+
return result
|
10
|
+
rescue StandardError => e
|
11
|
+
# Convert Python exception to Pyru exception
|
12
|
+
raise PyruException, "Error calling Python function: #{e.message}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class Conversions
|
18
|
+
def self.python_to_pyru(python_value)
|
19
|
+
# Placeholder for converting Python to Pyru
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class PyruException < StandardError
|
24
|
+
# Pyru exception class
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# lib/pyru_ruby_bridge.rb
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Pyru_Ruby_Bridge
|
6
|
+
class RubyBridge
|
7
|
+
def self.some_ruby_method(arg)
|
8
|
+
# Call the actual Ruby method here
|
9
|
+
# For example, assuming `some_ruby_method` is defined in a Ruby library
|
10
|
+
result = some_ruby_method(arg)
|
11
|
+
|
12
|
+
# Convert the result to Pyru data type
|
13
|
+
return PyruRubyBridge::Conversions.ruby_to_pyru(result)
|
14
|
+
rescue StandardError => e
|
15
|
+
# Convert Ruby exception to Pyru exception
|
16
|
+
raise PyruRubyBridge::PyruException, "Error calling Ruby method: #{e.message}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Conversions
|
21
|
+
def self.ruby_to_pyru(ruby_value)
|
22
|
+
# Placeholder for converting Ruby to Pyru
|
23
|
+
# You can implement the conversion logic based on your requirements
|
24
|
+
# For example:
|
25
|
+
# Convert Ruby hash to Pyru dictionary
|
26
|
+
return JSON.parse(ruby_value.to_json)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class PyruException < StandardError
|
31
|
+
# Pyru exception class
|
32
|
+
end
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pyru
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- munsterkreations
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-05-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rubygems
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '13.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '13.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: python
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.14'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.14'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: faker
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.0'
|
125
|
+
description: A Ruby gem that provides a Pyru-friendly interface for Ruby libraries.
|
126
|
+
email:
|
127
|
+
- k7Gp7@example.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- lib/pyru.rb
|
133
|
+
- lib/pyru_compiler.rb
|
134
|
+
- lib/pyru_examples.rb
|
135
|
+
- lib/pyru_lexer.rb
|
136
|
+
- lib/pyru_parser.rb
|
137
|
+
- lib/pyru_python_bridge.rb
|
138
|
+
- lib/pyru_ruby_bridge.rb
|
139
|
+
homepage: https://github.com/munsterkreations/pyru
|
140
|
+
licenses:
|
141
|
+
- MIT
|
142
|
+
metadata: {}
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ">="
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
requirements: []
|
158
|
+
rubygems_version: 3.5.9
|
159
|
+
signing_key:
|
160
|
+
specification_version: 4
|
161
|
+
summary: Pyru-friendly interface for Ruby libraries
|
162
|
+
test_files: []
|