Module: LexxyRealtime
- Defined in:
- lib/lexxy_realtime.rb,
lib/lexxy_realtime/engine.rb,
lib/lexxy_realtime/version.rb,
lib/lexxy_realtime/form_builder.rb,
lib/lexxy_realtime/collaborative.rb,
lib/generators/lexxy_realtime/install/install_generator.rb
Overview
Rails integration for collaborative Lexxy editing with yrby.
Defined Under Namespace
Modules: Collaborative, FormBuilder, Generators Classes: Engine
Constant Summary collapse
- SGID_PURPOSE =
Signed ids from the form helper carry this purpose scoped per field (sgid_purpose), so a token minted elsewhere can't join a document.
:lexxy_realtime- CHANNEL_NAME =
The channel the installer generates and the form helper points elements at.
"DocumentChannel"- VERSION =
"0.4.0"
Class Attribute Summary collapse
Class Method Summary collapse
-
.collaborator_color(name) ⇒ Object
A stable, readable cursor color per collaborator name.
- .sgid_purpose(field) ⇒ Object
Class Attribute Details
.identity ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/lexxy_realtime.rb', line 24 def identity @identity ||= lambda do |view| user = view.respond_to?(:current_user) ? view.current_user : nil # Use Anonymous when no display name is available. name = user && %i[name username handle].lazy.filter_map { |a| user.try(a).presence }.first { name: name || "Anonymous", color: nil } end end |
Class Method Details
.collaborator_color(name) ⇒ Object
A stable, readable cursor color per collaborator name.
34 35 36 |
# File 'lib/lexxy_realtime.rb', line 34 def collaborator_color(name) "hsl(#{name.to_s.each_byte.reduce(0) { |acc, b| ((acc * 31) + b) % 360 }}, 70%, 45%)" end |
.sgid_purpose(field) ⇒ Object
18 |
# File 'lib/lexxy_realtime.rb', line 18 def sgid_purpose(field) = "#{SGID_PURPOSE}/#{field}" |