atome 0.5.6.0.4 → 0.5.6.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +14 -1
- data/atome.gemspec +18 -3
- data/exe/atome +51 -26
- data/lib/atome/version.rb +1 -1
- data/lib/atome.rb +1 -1
- data/lib/atome_relative.rb +1 -1
- data/lib/eVe/LICENSE +8 -0
- data/lib/eVe/README.md +350 -0
- data/lib/eVe/documentation/Backup_docs.zip +0 -0
- data/lib/eVe/documentation/server.md +2 -0
- data/lib/eVe/eVe.rb +1 -0
- data/lib/eVe/eVe_relative.rb +1 -0
- data/lib/eVe/todo.txt +147 -0
- data/lib/platform_specific/opal/opal.rb +1 -0
- metadata +36 -2
- data/lib/atome/eve.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b95189cdeb5fd525c61044cb540b3ff487ab48afdaaf162cc8330d5dc01edd5b
|
4
|
+
data.tar.gz: a7b2cc31314513f94123cf12f9223eb892fd3275c4f0e73d4921775ba1f58e0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff8cf89846a9b8abf0210356b2fd3b80a084e92bb309ee0ec263ca154d559ac84c8499da7e9161f91785ad46babb45a9c7d2d68f990b2f5a3cc7ca52cf24c0da
|
7
|
+
data.tar.gz: 98e1d3e237e35adba9c1319b814c0c3c7b04620e513cf9ece38770f21f683b93c3235ff88822bd84c6b3d76c118ed8b6a864067da4afc73686476ea907644334
|
data/Rakefile
CHANGED
@@ -8,6 +8,19 @@ require 'rubygems/uninstaller'
|
|
8
8
|
require 'bundler/gem_tasks'
|
9
9
|
load 'exe/atome'
|
10
10
|
|
11
|
+
|
12
|
+
|
13
|
+
folder_name = 'lib/eVe'
|
14
|
+
|
15
|
+
unless Dir.exist?(folder_name)
|
16
|
+
Dir.mkdir(folder_name)
|
17
|
+
File.open('lib/eVe/eVe_relative.rb', 'w') do |file|
|
18
|
+
end
|
19
|
+
File.open('lib/eVe/eVe.rb', 'w') do |file|
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
11
24
|
task :cleanup do
|
12
25
|
|
13
26
|
manager = Gem::CommandManager.instance
|
@@ -185,7 +198,7 @@ task :test_server do
|
|
185
198
|
threads = []
|
186
199
|
threads << Thread.new do
|
187
200
|
|
188
|
-
|
201
|
+
sleep 1
|
189
202
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
190
203
|
# code to exec for Windows
|
191
204
|
`start http://localhost:9292`
|
data/atome.gemspec
CHANGED
@@ -22,17 +22,32 @@ Gem::Specification.new do |spec|
|
|
22
22
|
# Specify which files should be added to the gem when it is released.
|
23
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
24
24
|
|
25
|
+
# spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
+
# `git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
# (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
28
|
+
# end
|
29
|
+
# end
|
25
30
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
-
|
31
|
+
# Utilisez git ls-files pour récupérer les fichiers, puis filtrez-les selon vos besoins
|
32
|
+
git_files = `git ls-files -z`.split("\x0").reject do |f|
|
27
33
|
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
28
34
|
end
|
35
|
+
|
36
|
+
# Ajoutez manuellement les fichiers du dossier lib/eVe
|
37
|
+
eve_files = Dir['lib/eVe/**/*']
|
38
|
+
|
39
|
+
# Combine les deux listes de fichiers
|
40
|
+
git_files + eve_files
|
29
41
|
end
|
30
42
|
|
31
43
|
spec.bindir = 'exe'
|
32
44
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
33
45
|
spec.require_paths = ['lib']
|
34
46
|
|
47
|
+
|
48
|
+
spec.add_runtime_dependency 'artoo', '~> 1.8.2'
|
35
49
|
# spec.add_runtime_dependency 'arduino_firmata', '~> 0.3'
|
50
|
+
# spec.add_runtime_dependency 'eVe', '~> 0.1.0'
|
36
51
|
spec.add_runtime_dependency 'eventmachine', '~> 1.2.7'
|
37
52
|
spec.add_runtime_dependency 'faye-websocket', '~> 0.1'
|
38
53
|
spec.add_runtime_dependency 'geocoder', '~> 1.8'
|
@@ -40,6 +55,7 @@ Gem::Specification.new do |spec|
|
|
40
55
|
# spec.add_runtime_dependency 'guard-shell', '~> 0.7.2'
|
41
56
|
# spec.add_runtime_dependency 'guard-puma', '~> 0.8.1'
|
42
57
|
# spec.add_runtime_dependency 'shotgun', '~> 0.9.2'
|
58
|
+
spec.add_runtime_dependency 'gems', '~> 1.2'
|
43
59
|
spec.add_runtime_dependency 'guard-rake', '~> 1.0'
|
44
60
|
# spec.add_runtime_dependency 'rerun', '~> 0.14.0'
|
45
61
|
spec.add_runtime_dependency 'image_size', '~> 3.0'
|
@@ -58,12 +74,11 @@ Gem::Specification.new do |spec|
|
|
58
74
|
spec.add_runtime_dependency 'sequel', '~> 5.5'
|
59
75
|
spec.add_runtime_dependency 'sqlite3', '~> 1.4'
|
60
76
|
spec.add_runtime_dependency 'uglifier', '~> 0.1'
|
61
|
-
#spec.add_runtime_dependency 'webrick', '~> 1.7.0'
|
77
|
+
# spec.add_runtime_dependency 'webrick', '~> 1.7.0'
|
62
78
|
# the gem below are need to make the atome server works on Windows
|
63
79
|
spec.add_runtime_dependency 'tzinfo-data', '~> 1.2023.4'
|
64
80
|
spec.add_runtime_dependency 'win32-security', '~> 0.5.0'
|
65
81
|
|
66
|
-
|
67
82
|
# Uncomment to register a new dependency of your gem
|
68
83
|
# spec.add_dependency "example-gem", "~> 1.0"
|
69
84
|
|
data/exe/atome
CHANGED
@@ -8,6 +8,8 @@ require 'pathname'
|
|
8
8
|
require 'opal'
|
9
9
|
require 'parser'
|
10
10
|
require 'uglifier'
|
11
|
+
require 'rubygems'
|
12
|
+
require 'gems'
|
11
13
|
|
12
14
|
# utils
|
13
15
|
|
@@ -184,7 +186,6 @@ def create_application(source, destination, project_name)
|
|
184
186
|
end
|
185
187
|
|
186
188
|
def update_application(source, destination, project_name)
|
187
|
-
`gem install atome`
|
188
189
|
project_path = "#{destination}/#{project_name}"
|
189
190
|
FileUtils.mkdir_p(destination) unless Dir.exist?(destination)
|
190
191
|
FileUtils.mkdir_p(project_path) unless Dir.exist?(project_path)
|
@@ -479,34 +480,58 @@ if ARGV.include?('create')
|
|
479
480
|
end
|
480
481
|
|
481
482
|
if ARGV.include?('update')
|
483
|
+
`gem install atome`
|
482
484
|
# TODO: also update index.html and all other files except the application folder
|
483
|
-
#
|
485
|
+
# we check we are in atome app
|
486
|
+
if Dir.exist?("#{destination}/application") && !Dir.exist?("#{destination}/vendor")
|
487
|
+
# first we delete everything but application
|
484
488
|
|
485
|
-
|
489
|
+
files_to_treat = %w[server src-tauri src-wasm Guardfile Rakefile src/css src/js/atome src/js/third_parties src/medias
|
486
490
|
src/favicon.ico src/index_wasm.html src/index_opal.html src/index_server.html src/index_server_wasm.html]
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
491
|
+
files_to_treat.each do |item|
|
492
|
+
item_path = File.join(destination, item)
|
493
|
+
if File.directory?(item_path)
|
494
|
+
FileUtils.rm_rf(item_path) unless item == '.' || item == '..'
|
495
|
+
elsif File.file?(item_path)
|
496
|
+
File.delete(item_path)
|
497
|
+
end
|
498
|
+
source_item = "#{source}/vendor/assets/#{item}"
|
499
|
+
FileUtils.cp_r(source_item, item)
|
493
500
|
end
|
494
|
-
|
495
|
-
|
501
|
+
# now rebuilding aop lib
|
502
|
+
# build opal
|
503
|
+
build_opal_library(source, destination, project_name)
|
504
|
+
# build parser
|
505
|
+
build_opal_parser(source, destination, project_name)
|
506
|
+
# build atome kernel
|
507
|
+
build_atome_kernel_for_opal(source, destination, project_name)
|
508
|
+
# build host_mode
|
509
|
+
build_host_mode(destination, project_name, 'web-opal')
|
510
|
+
# build Opal extensions
|
511
|
+
build_opal_extensions(source, destination, project_name)
|
512
|
+
# build application
|
513
|
+
build_opal_application(source, destination, project_name)
|
514
|
+
|
515
|
+
########################
|
516
|
+
|
517
|
+
# unless Dir.exist?("#{destination}/vendor")
|
518
|
+
# Dir.mkdir("#{destination}/vendor")
|
519
|
+
# end
|
520
|
+
|
521
|
+
#######################
|
522
|
+
|
523
|
+
puts "your application is up to date"
|
496
524
|
end
|
497
|
-
|
498
|
-
#
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
#
|
505
|
-
|
506
|
-
#
|
507
|
-
build_opal_extensions(source, destination, project_name)
|
508
|
-
# build application
|
509
|
-
build_opal_application(source, destination, project_name)
|
525
|
+
|
526
|
+
# now we get the version of the atome gem
|
527
|
+
gem_name = 'atome'
|
528
|
+
|
529
|
+
# Obtenez les informations du gem depuis RubyGems.org
|
530
|
+
gem_info = Gems.info(gem_name)
|
531
|
+
|
532
|
+
# Extrait la version la plus récente du gem
|
533
|
+
latest_version = gem_info['version']
|
534
|
+
puts "#{gem_name} #{latest_version} is now installed "
|
510
535
|
|
511
536
|
end
|
512
537
|
|
@@ -690,14 +715,14 @@ else
|
|
690
715
|
build_opal_application(nil, destination, project_name)
|
691
716
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
692
717
|
# code to exec with Windows
|
693
|
-
|
718
|
+
# `start #{destination}\\#{project_name}\\src\\index_server.html`
|
694
719
|
`start http://localhost:9292`
|
695
720
|
elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
|
696
721
|
# code to exec with MacOS
|
697
722
|
`open http://localhost:9292`
|
698
723
|
else
|
699
724
|
# code to exec with Unix/Linux
|
700
|
-
|
725
|
+
`open http://localhost:9292`
|
701
726
|
end
|
702
727
|
end
|
703
728
|
|
data/lib/atome/version.rb
CHANGED
data/lib/atome.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# require 'eve'
|
3
2
|
|
4
3
|
# require without relative is needed when using Opal
|
5
4
|
require 'fileutils'
|
@@ -34,4 +33,5 @@ require 'renderers/html/index'
|
|
34
33
|
require 'renderers/headless/index'
|
35
34
|
require 'renderers/server/index'
|
36
35
|
require 'atome/helpers/sanitizer'
|
36
|
+
require 'eVe/eVe'
|
37
37
|
require 'atome/genesis/sparkle'
|
data/lib/atome_relative.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# require 'eve'
|
3
2
|
# relative is needed when using ruby wasm
|
4
3
|
require 'fileutils'
|
5
4
|
require 'securerandom'
|
@@ -33,4 +32,5 @@ require_relative './renderers/html/index_relative'
|
|
33
32
|
require_relative './renderers/headless/index_relative'
|
34
33
|
require_relative './renderers/server/index_relative'
|
35
34
|
require_relative './atome/helpers/sanitizer'
|
35
|
+
require_relative './eVe/eVe_relative'
|
36
36
|
require_relative './atome/genesis/sparkle'
|
data/lib/eVe/LICENSE
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
/*******************************************************
|
2
|
+
* Copyright (C) 2019-2020 atome http://atome.io
|
3
|
+
*
|
4
|
+
* This file is part of atome.
|
5
|
+
*
|
6
|
+
* eVe can not be copied and/or distributed without the express
|
7
|
+
* permission of atome
|
8
|
+
*******************************************************/
|
data/lib/eVe/README.md
ADDED
@@ -0,0 +1,350 @@
|
|
1
|
+
# eVe
|
2
|
+
|
3
|
+
![](../ressources/icons/100.png)
|
4
|
+
|
5
|
+
Cross platform development
|
6
|
+
-
|
7
|
+
|
8
|
+
To install application and run:
|
9
|
+
|
10
|
+
Insert eVe project at the root of atome framework and run atome
|
11
|
+
|
12
|
+
|
13
|
+
I - The framework
|
14
|
+
-
|
15
|
+
|
16
|
+
- atome is a cross platform development environment.
|
17
|
+
all apis work across all platform, to ensure the exact same rendering on Android, Freebsd, linux, MacOs, Web, Windows.
|
18
|
+
|
19
|
+
- atome can create build web site, mobile or desktop applications, games, presentations...
|
20
|
+
|
21
|
+
- atome is entirely open source as well as all the included libraries.you can do what you want want with it, the whole framework offer a permissive open source licence.
|
22
|
+
|
23
|
+
- atome comes with a powerful multi-rendering engine (it can render any atome object across several different render engine simultaneously )
|
24
|
+
|
25
|
+
- atome's solutions can be deploy as a client, a server or both
|
26
|
+
|
27
|
+
- the framework is totally hybrid, it means it can be executed in a web browser, a web view or as a full native application
|
28
|
+
|
29
|
+
- ***(eVe only) when deploy as a server, any machine can host the server even without running, PHP , ruby, ...
|
30
|
+
|
31
|
+
- any application created with it can be used as a data holder, in this case it behave like an universal multimedia document ( think pdf with sound , videos, animations, interactivity, entirely scriptable, ....)
|
32
|
+
|
33
|
+
- the powerful scripting engine can script any atome object on the fly at runtime.
|
34
|
+
|
35
|
+
|
36
|
+
II Guideline and philosophy
|
37
|
+
-
|
38
|
+
|
39
|
+
The idea behind the atome concept is to have a kind of "universal portable intelligent document", this means :
|
40
|
+
|
41
|
+
- no filetype but instead unique objet called an atome (that could a text, an image, a group of object , a video, an efect, ..). This atome can then be mnanipulated by any availlable api.
|
42
|
+
|
43
|
+
The object uniq architecture bring us lot of new features:
|
44
|
+
|
45
|
+
- Simplfly the automatisation of batch process as the object is always the same whatever it is (from a simple box thru a video montage to a complex page description) it's always an atome)
|
46
|
+
- Simplfy the devellopment and tests of new tools. Ruby language allow you to script anything on the fly
|
47
|
+
- Reduce the number of tools needed for an application. (you dont ever have to wrote a specific tool for a specific medias anymore, as the same tool now work on any atome.
|
48
|
+
- and many many other ...
|
49
|
+
to keep this idea working we have to follow the following rules during atome development :
|
50
|
+
|
51
|
+
- All Apis must run of all targeted platform (their should be no diiference form one platform to another.
|
52
|
+
- any property or new api must always work on any type of atome, to keep the consistency of the "atome uniq object"
|
53
|
+
|
54
|
+
III - main Open source Software included
|
55
|
+
-
|
56
|
+
- Cordova : a cross platform framework to create applications with web view rendering (https://cordova.apache.org)
|
57
|
+
|
58
|
+
- Urho3D : is a cross platform 3D rendering and game engine used create native applications(or web rendering) using Webassembly (https://urho3d.github.io)
|
59
|
+
|
60
|
+
- FreeBSD : is a Unix environment with jails, allow to create and boot embedded applications on any compatible machine (standard PC, Raspberry, Beaglebone, etc..) (https://www.freebsd.org/fr/)
|
61
|
+
|
62
|
+
- Ruby : is the language used to script all atomes apis (https://www.ruby-lang.org)
|
63
|
+
|
64
|
+
- Opal : is a ruby gem used to compile the ruby language to JS (https://opalrb.com)
|
65
|
+
|
66
|
+
- Roda : is a ruby web framework that hold the server version of atome (https://roda.jeremyevans.net)
|
67
|
+
|
68
|
+
- Puma : is a ruby web server to start the server version of atome (https://puma.io)
|
69
|
+
|
70
|
+
- Jquery : is a js framework to simplify JS development (https://jquery.com)
|
71
|
+
|
72
|
+
- ZimJS : is a html canvas rendering 2D engine (https://zimjs.com)
|
73
|
+
|
74
|
+
- Konva : is a html canvas rendering 2D engine (https://konvajs.org)
|
75
|
+
|
76
|
+
- FabricJS : is a html canvas rendering 2D engine (http://fabricjs.com)
|
77
|
+
|
78
|
+
- ThreeJS :is a html canvas rendering 3D engine (https://threejs.org)
|
79
|
+
|
80
|
+
- QAudio : a cross-platform C++ library for Audio Digital Signal Processing (https://cycfi.github.io/q/)
|
81
|
+
|
82
|
+
|
83
|
+
IV - Architecture of the folders
|
84
|
+
-
|
85
|
+
The atome framework is mainly based on a Cordova project, but add the following additional features :
|
86
|
+
|
87
|
+
- a ruby interpreter
|
88
|
+
|
89
|
+
- a web server
|
90
|
+
|
91
|
+
- a native mode with 3D rendering (the 3D engine is currently based on Urho3D).
|
92
|
+
|
93
|
+
- a low latency audio system
|
94
|
+
|
95
|
+
-a bootable option for embedded applications
|
96
|
+
|
97
|
+
The folders dedicated to the atome framework are :
|
98
|
+
|
99
|
+
- The app folder : contain all end user scripts
|
100
|
+
|
101
|
+
- The atome folder : it contain the atome ruby's gem, this is basically the heart of the framework
|
102
|
+
- atome : this is the object it self
|
103
|
+
- atome class is found in the atome.rb files
|
104
|
+
- this class contain 5 main methods named SAGED for Set - Add - Get - Enliven - Delete
|
105
|
+
|
106
|
+
- proton : contain all the default property's value when creating new object
|
107
|
+
|
108
|
+
- photon : contain all properties that define the physical aspect of the object to be renderer on a device, (visuals, sound , haptic...) ex: color, width
|
109
|
+
|
110
|
+
- neutron : contain all properties that are conceptual and do not need to be rendered in the view.
|
111
|
+
ex : selector, touch , child
|
112
|
+
|
113
|
+
- electron : contain a collection of utilities (functions) to work easier with atomes's objects
|
114
|
+
|
115
|
+
- big bang : initiate the atome environment
|
116
|
+
|
117
|
+
- The documentations folder : it contains infos and documentations of the framework ( how to install it , enhance it or use it )
|
118
|
+
|
119
|
+
- The opal_compiler : contains two files:
|
120
|
+
|
121
|
+
- opal_add_on.rb is a set of functions to enhance opal renderer, the parser
|
122
|
+
|
123
|
+
- parser.rb is used to allow 'on the fly' atome scripting in the web view when using the opal compiler
|
124
|
+
|
125
|
+
- The renderers folder :contains any rendering engine such as :
|
126
|
+
|
127
|
+
- html for pure js rendering
|
128
|
+
|
129
|
+
- Headless for text only rendering of atome's objects
|
130
|
+
|
131
|
+
- Vocals to render atomes as an audio description
|
132
|
+
|
133
|
+
- Urho3D for native rendering
|
134
|
+
|
135
|
+
- FabricJS for 2D rendering in canvas's web view
|
136
|
+
|
137
|
+
- ZIMJS for an alternative 2D rendering in canvas's web view
|
138
|
+
|
139
|
+
- Konva for an alternative 2D rendering in canvas's web view
|
140
|
+
|
141
|
+
- ThreeJS for 3D rendering in canvas's web view
|
142
|
+
|
143
|
+
- The scripts folder contains all the files to automatise the install of atome framework
|
144
|
+
|
145
|
+
- The rakefile file use to automatise the launch of atome framework
|
146
|
+
|
147
|
+
- The index.js in www/public/js contains js functions and utility for the web rendering of atome engine
|
148
|
+
|
149
|
+
- The index.html in www/public/ to initiate the web version of atome
|
150
|
+
|
151
|
+
|
152
|
+
V - Rendering engine
|
153
|
+
-
|
154
|
+
|
155
|
+
- NativeJS (web)
|
156
|
+
- ZimJS (web)
|
157
|
+
- Konva (web)
|
158
|
+
- FabricJS (web)
|
159
|
+
- ThreeJS (web)
|
160
|
+
- Urho3D (native or web with web assemebly)
|
161
|
+
- futur use case ( Unity, Unreal, Juce, ....)
|
162
|
+
|
163
|
+
|
164
|
+
VI - running method
|
165
|
+
-
|
166
|
+
|
167
|
+
- web (opal)
|
168
|
+
- server (roda)
|
169
|
+
- stand alone (Freebsd )
|
170
|
+
- native (urho 3D)
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
VII - what is an atome object
|
175
|
+
-
|
176
|
+
an atome is a collection of properties
|
177
|
+
|
178
|
+
|
179
|
+
- Anything that define an atome is a property.
|
180
|
+
any atome can contain an other atome or a group of atomes as a property ex:
|
181
|
+
|
182
|
+
|
183
|
+
b=box()
|
184
|
+
i=image(:logo)
|
185
|
+
c=circle()
|
186
|
+
t=text("hello)
|
187
|
+
c.atome(b)
|
188
|
+
puts c.child #=> c (b is now a child of c
|
189
|
+
b.group([i,t])
|
190
|
+
puts b.child #=> [i,t] (i and t ares now a child of b
|
191
|
+
|
192
|
+
please note that child method is always singular, even when if it return many children!
|
193
|
+
|
194
|
+
The atome properties are always define using a key-value pair (Hash type). those values can be a String, an Integer, a hash(key-value) or an array.
|
195
|
+
The atome can receive a second optional parameters to refresh the view or not.
|
196
|
+
in this case the atome is till rendered in the view but the newly added parameters does not refresh the objet.
|
197
|
+
(Please not the 'refresh option' behavior is not the same as the render property, the refresh option is used when a property is modify by the view it self we want to modification to be stored into the atome structure, but but want the view to be re-rendered)
|
198
|
+
|
199
|
+
- Any property can be define using an unique value (passed as a String , Symbole or a numeric value)
|
200
|
+
|
201
|
+
|
202
|
+
a=box({color: :red})
|
203
|
+
a.color(:red)
|
204
|
+
a.set({color: :red})
|
205
|
+
|
206
|
+
- Any property define are store internally as a Hash or an array if the property is define many times
|
207
|
+
|
208
|
+
|
209
|
+
a=box()
|
210
|
+
a.color(:red)
|
211
|
+
puts a.color #=> {color: :red}
|
212
|
+
|
213
|
+
- to set a complex property such as shadow that needs more more than one parameters we have to send a hash to the atome
|
214
|
+
|
215
|
+
please note that any property can potentially have multiples parameters even the simplest one
|
216
|
+
|
217
|
+
a=box()
|
218
|
+
a.set({x: {content: 200, unit: :meters})
|
219
|
+
|
220
|
+
- Any property are stackable (even the simplest one), in this case we used the 'add' method to stack prop. alternatively it's possible to used an array to stack properties
|
221
|
+
|
222
|
+
a simple gradient :
|
223
|
+
|
224
|
+
b=box()
|
225
|
+
b.color([{color: :red, top: 0}, {color: :blue, bottom: 0}])
|
226
|
+
|
227
|
+
|
228
|
+
- all properties are treated identically and can be swap at any time.Type mutation is also possible : ex change the type of object from an image to text type
|
229
|
+
|
230
|
+
x=image(:boat)
|
231
|
+
x.type(:text) #now the objet is rendered as a text object
|
232
|
+
|
233
|
+
|
234
|
+
here some possible definition of an atome
|
235
|
+
|
236
|
+
|
237
|
+
a=box({color: red}) # an red box is created
|
238
|
+
a.set(smooth: 3) # the box has rounded corner the view is refreshed
|
239
|
+
a.set({width: 250},true )# the box is now 250px wide the view is forced to refresh
|
240
|
+
a.set({border: :orange, thickness: 3}, false) #the atome is still red the view is not refreshed (no border!)
|
241
|
+
a.set([[color: :red, top: 20],[color: :blue, bottom: 0]], false) #the first parameters is an array that contain an array of color to allow a gradient , finally the view is not refreshed the atome remains 'red'.
|
242
|
+
a.color([{color: :yellow, top: 0}, {color: :orange, bottom: 0}]) # another way to set the atome property using the property name instead of using the 'set' methods, this time the view is refreshed
|
243
|
+
|
244
|
+
VIII - Enhancing the atome framework
|
245
|
+
-
|
246
|
+
|
247
|
+
how to create new type:
|
248
|
+
ex create a "web" type
|
249
|
+
|
250
|
+
- if a visuals are required for the new created, you have to add the following lines in the proton.rb file within 'module Proton':
|
251
|
+
|
252
|
+
|
253
|
+
@@web = @@visual.merge(@@shape).merge(type: :web, preset: :web)
|
254
|
+
|
255
|
+
|
256
|
+
the presets method create a new hash that hold the basics properties of the new atome type(in this case web type), it is need if you want to define the visual default representation of the type
|
257
|
+
|
258
|
+
- in proton.rb, the module Proton contains the 'presets' method you have to return the newly created ex:
|
259
|
+
return {box: box, circle: circle, text: text, image: image, video: video, audio: audio, particle: particle, tool: tool, web: web}
|
260
|
+
|
261
|
+
|
262
|
+
- optionally you can define a new function that behave like a shortcut to create a preconfigured object. In this case a "web" function
|
263
|
+
will create the shortcut.
|
264
|
+
ex add the following function in the big_bang.rb file:
|
265
|
+
(To be consistent the function should have the name of the newly created type)
|
266
|
+
|
267
|
+
|
268
|
+
def web(options = nil)
|
269
|
+
if options && (options[:render]==false || options[:render]==:false )
|
270
|
+
refresh=false
|
271
|
+
else
|
272
|
+
refresh=true
|
273
|
+
end
|
274
|
+
atome = Atome.new(:web, refresh)
|
275
|
+
if options && (options.class == Symbol || options.class == String)
|
276
|
+
atome.send(:content, options)
|
277
|
+
elsif options && options.class == Hash
|
278
|
+
options.each_key do |param|
|
279
|
+
value = options[param]
|
280
|
+
atome.send(param, value)
|
281
|
+
end
|
282
|
+
end
|
283
|
+
return atome
|
284
|
+
end
|
285
|
+
|
286
|
+
|
287
|
+
- neutron.rb file add the following lines :
|
288
|
+
|
289
|
+
|
290
|
+
def web params = nil, refresh = true, add = false
|
291
|
+
tag = :web
|
292
|
+
web = Atome.new(tag)
|
293
|
+
if params.class == String || params.class == Symbol
|
294
|
+
params = {content: params}
|
295
|
+
elsif params.class == Hash
|
296
|
+
self.child.each do |child|
|
297
|
+
if child.type == tag
|
298
|
+
params.keys.each do |key|
|
299
|
+
value = params[key]
|
300
|
+
child.send(key, value)
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
web.set(params)
|
306
|
+
self.group(web)
|
307
|
+
web.x(0)
|
308
|
+
web.y(0)
|
309
|
+
return web
|
310
|
+
end
|
311
|
+
|
312
|
+
def web= params = nil, refresh = true, add = false
|
313
|
+
web(params, refresh, add)
|
314
|
+
end
|
315
|
+
|
316
|
+
|
317
|
+
There two possibles ways to build an atome object:
|
318
|
+
|
319
|
+
- using the Atome class
|
320
|
+
|
321
|
+
a=Atome.new(:box)
|
322
|
+
|
323
|
+
|
324
|
+
- or the lazy the way using preset
|
325
|
+
|
326
|
+
a=box()
|
327
|
+
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
IX - working with atome framework
|
332
|
+
-
|
333
|
+
any atome properties can be set using a unique value using the syntax below :
|
334
|
+
|
335
|
+
a=box()
|
336
|
+
a.color(:red)
|
337
|
+
a.x=200
|
338
|
+
|
339
|
+
|
340
|
+
you can send also the properties to the atome using parenthesis ou the equal sign:
|
341
|
+
|
342
|
+
a=box()
|
343
|
+
a.x(300)
|
344
|
+
a.y=500
|
345
|
+
|
346
|
+
|
347
|
+
X - logic and datas flows
|
348
|
+
-
|
349
|
+
|
350
|
+
|
Binary file
|
data/lib/eVe/eVe.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
puts "so cool!!!"
|
@@ -0,0 +1 @@
|
|
1
|
+
puts "so good!!!"
|
data/lib/eVe/todo.txt
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
|
2
|
+
Urgent :
|
3
|
+
- Drag and drop
|
4
|
+
- Save
|
5
|
+
- user strategy
|
6
|
+
- U.I.
|
7
|
+
- IDE
|
8
|
+
- Embeded versionnb v
|
9
|
+
|
10
|
+
tool composition tool :
|
11
|
+
- Examples
|
12
|
+
- Api name
|
13
|
+
- Definition
|
14
|
+
- usages
|
15
|
+
- copyright
|
16
|
+
- price
|
17
|
+
- Author
|
18
|
+
- presets
|
19
|
+
- connex tools
|
20
|
+
- code
|
21
|
+
- version of Api
|
22
|
+
- create a two way return method. ex : e.x => 50 e.x_incept => {content: :50, dynamic => true, reference: :view}
|
23
|
+
- suppress all @@ class varaible
|
24
|
+
- find a solution when setting text if we want to position it corecctly and obtain the correct size using the value api when have to set prop in this order:find a way to set the prop in any order : text_title.width(:auto)
|
25
|
+
text_title.x = 80
|
26
|
+
text_title.xx = 80
|
27
|
+
text_title.y = 0
|
28
|
+
- add adaptive size: for width and height too:
|
29
|
+
- create method accumulate so the next obect is postioned after the precedent etheir along x or y axis, with an optional offset
|
30
|
+
- to modify text lines aligenments t.child.align(:distribute/x/xx, center) text_title.size(34)
|
31
|
+
- bug when inserting an object into another if the insertted object is centererd before grouping its position is incorect
|
32
|
+
- change width according to the right align
|
33
|
+
- enliven still need a bit od refinement
|
34
|
+
- to test: read_code in help.rb ( reactive the commented lines)
|
35
|
+
- if object position is specified using xx then when dragging it should remain relative to xx not to x
|
36
|
+
- todo objet masking and stencil with boolean
|
37
|
+
- bug width anim help error with border radius
|
38
|
+
- add or check if a delete property exist and relaly delete the property and it's value
|
39
|
+
- bug text menu on resize start in method render_resize in html.rb file
|
40
|
+
- finish to add monitor to all apis
|
41
|
+
- verify object in object
|
42
|
+
- check old group method for group in group!!
|
43
|
+
- create detach method
|
44
|
+
- .bat script on windows to install atome
|
45
|
+
- check group add child nd parent respectively
|
46
|
+
- check ungroup both remove parent and child property
|
47
|
+
- unify (group/child) - (attach-parent) (detach-ungroup)
|
48
|
+
- Help.render bug, Help.volume_example bug
|
49
|
+
- reflection if presets are global or specific to a atype , cf preset :red only available for color or also for text
|
50
|
+
- allow to create new preset
|
51
|
+
- Better alert system
|
52
|
+
- create objext in object example
|
53
|
+
- create rotation example
|
54
|
+
- finish attach api (group inverse)
|
55
|
+
- Important : Objet created in objet are not centered anymore!!
|
56
|
+
- Important : check if event are re-injected when setting events before sending type to the view
|
57
|
+
- create a console objet and redirect the js console to the new console
|
58
|
+
- bug when enliven a draggable object
|
59
|
+
- bug when enliven an object whith children. Children are nor enliven
|
60
|
+
- add Urho 3D rendering (Mruby)
|
61
|
+
- Arduino (shell acces from cordova)
|
62
|
+
- Create menu
|
63
|
+
- U.I.
|
64
|
+
- Save mecanism (DB and file)
|
65
|
+
- check Roda and native Ruby
|
66
|
+
- websocket
|
67
|
+
- restore ide
|
68
|
+
- create console
|
69
|
+
- Add Q-Audio native library binding
|
70
|
+
- remove all comment when creating production version
|
71
|
+
- Kind of bug, if we run the script 'default_values' in Help then the 'enliven' script position are not consistent because the position is first set using x and then override by left and top (is it a bug?)
|
72
|
+
- record media
|
73
|
+
- allow iframe integration
|
74
|
+
- object type permutation
|
75
|
+
- Help.drag bug object are persistent when modifying or re running the script
|
76
|
+
- drag api is badly formated and not send the same manner to the render when restoring from @drag other event api with proc may have the same propblem
|
77
|
+
- when using b=box(); c=b.circle({x: 20}) objet are badly positioned
|
78
|
+
- text tabulation is rendered
|
79
|
+
- Align bug for text
|
80
|
+
- unify all finite value with value 0 to 1
|
81
|
+
- render_fill bug when using % or px (html.rb line 308 - 317
|
82
|
+
- enhancement check Preset algorythm behavior, it should create an atome accordingg to the type then apply the preset's optional proprties (also check if the type and the the presetare corectly fromated and saved)
|
83
|
+
- bug when changing image content if a size it is reset
|
84
|
+
- better integration of web iframe
|
85
|
+
- image can't be created using Atome.new({"id"=>"logo", "type"=>"image", "content"=>"atome", "preset"=>"box", "size"=>33.33333333333333, "top"=>8.333333333333334, "left"=>8.333333333333334, "shadow"=>{"color"=>"rgba(0,0,0,0.3)", "blur"=>16, "x"=>0, "y"=>0}})
|
86
|
+
- rename drag event page_x to x
|
87
|
+
- out api (when over)
|
88
|
+
- ensure atome_id unicity
|
89
|
+
- drag api on mobile kill any touch set before the drag but doesn't on desktop
|
90
|
+
- conflict between get(id) and atome.get
|
91
|
+
- anim callback
|
92
|
+
- internationalisation
|
93
|
+
- multi render engine
|
94
|
+
- group store only the iD of the object grouped not the atome
|
95
|
+
- add dynamic option to center api to allow recentering on resize
|
96
|
+
- add an offset option when using the center api
|
97
|
+
- add target option to center api to allow centering according to another object
|
98
|
+
- parent api should return the id instead of the atome_id to be easier for coder
|
99
|
+
- bug : when writing b=box();b.x=b.y=300;alert b.info.join("\n") it crash
|
100
|
+
- add rotation pivot option
|
101
|
+
- infos tools
|
102
|
+
- select tool
|
103
|
+
- Make tests
|
104
|
+
- unify unit ( 0 to 1) for all values
|
105
|
+
- change color so when a user specify a purple color it create a "purple" preset, the atome then look like this :
|
106
|
+
[type: :shape, preset: :box, red: [child: :purple],green: [child: :purple],blue: [child: :purple],alpha: [child: :purple],cyan: [child: :purple],magenta: [child: :purple],yellow: [child: :purple],key: [child: :purple]]
|
107
|
+
- anim param as a block and param used to acitvate desavtivate anim : b.anim(true) do |evt|; start: {x: 0}, end: {x: 200}, duration: 150, target: b.id; end
|
108
|
+
- Collaboration
|
109
|
+
- User account
|
110
|
+
- Rights managements
|
111
|
+
- Multidevice acccount access and datas retreive
|
112
|
+
- import asset with drag an drop
|
113
|
+
- Int8!
|
114
|
+
- Accessibility
|
115
|
+
- keep current content in event (allow the use of self in bloc) proc.call(evt) if proc.is_a?(Proc) #instance_eval(&proc) if proc.is_a?(Proc)
|
116
|
+
- on overflow
|
117
|
+
- name and store events in a list to remove those events by their names
|
118
|
+
|
119
|
+
- remove all code in backtick from html.rb file
|
120
|
+
- pb de css filter qui s'efface le precedent quand on en ajoute un nouveau
|
121
|
+
|
122
|
+
|
123
|
+
eVe Tools to do :
|
124
|
+
done - bug with Help module and topic name if topic is an atome function etheir the topic is not display or the atome methode doesnt work
|
125
|
+
pone - bug if help is call before background the app is freeze
|
126
|
+
done - pb drag ex a.drag(true) (sans bloc do end)
|
127
|
+
done - remove jquery UI css error
|
128
|
+
done - add romain Arc
|
129
|
+
done - put all render methods in html.rb file in a module
|
130
|
+
done - delete child when deleting group
|
131
|
+
done - clean up code
|
132
|
+
done - correct deletion strategy for object
|
133
|
+
done - on resize (for view)
|
134
|
+
done - Allow youtube integration
|
135
|
+
done - replace refresh by render property in atome api ex: box({color: :red, render: false})
|
136
|
+
done - bug in 'every' api that stop after 5 times
|
137
|
+
done - Help.render crash the help application
|
138
|
+
done - finish fit function
|
139
|
+
done - catch eror when a media is messing to avoid : "[]: undefined method `[]' for nil"
|
140
|
+
done - add_prop_to_all child crash
|
141
|
+
done - allow default value for atome to be parametric
|
142
|
+
done - verify selectable is possible( for objet and text)
|
143
|
+
Done - a regression prevent resurection to work
|
144
|
+
Done - refresh rake compile when modifying atome libs
|
145
|
+
done - resize method (scale)
|
146
|
+
Done - puts render in a class Render with optional rendering engine( mfor multiples simultaneaous rendering)
|
147
|
+
Done - puts the render methods in a module
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.6.
|
4
|
+
version: 0.5.6.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean-Eric Godard
|
@@ -10,6 +10,20 @@ bindir: exe
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2024-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: artoo
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.8.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.8.2
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: eventmachine
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '2.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: gems
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.2'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.2'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: guard-rake
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -388,7 +416,6 @@ files:
|
|
388
416
|
- exe/atome
|
389
417
|
- lib/atome.rb
|
390
418
|
- lib/atome/atome.rb
|
391
|
-
- lib/atome/eve.rb
|
392
419
|
- lib/atome/extensions/atome.rb
|
393
420
|
- lib/atome/extensions/geolocation.rb
|
394
421
|
- lib/atome/extensions/mathematics.rb
|
@@ -433,6 +460,13 @@ files:
|
|
433
460
|
- lib/atome/presets/atome.rb
|
434
461
|
- lib/atome/version.rb
|
435
462
|
- lib/atome_relative.rb
|
463
|
+
- lib/eVe/LICENSE
|
464
|
+
- lib/eVe/README.md
|
465
|
+
- lib/eVe/documentation/Backup_docs.zip
|
466
|
+
- lib/eVe/documentation/server.md
|
467
|
+
- lib/eVe/eVe.rb
|
468
|
+
- lib/eVe/eVe_relative.rb
|
469
|
+
- lib/eVe/todo.txt
|
436
470
|
- lib/platform_specific/opal/atome_opal_extensions.rb
|
437
471
|
- lib/platform_specific/opal/extensions/color.rb
|
438
472
|
- lib/platform_specific/opal/extensions/geolocation.rb
|
data/lib/atome/eve.rb
DELETED
File without changes
|