SlideShare uma empresa Scribd logo
1 de 15
Seafox
   +
 Nick Ager
Demo
Why #1?


• Learning Seaside
Why #2 - workflow
                                      Seaside
          Dreamweaver



                        ?

Graphic designer
                            Seaside developer
Implementation
            Ideas
1. Dreamweaver plug-in
2. Smalltalk HTML parser
3. Firefox plugin
Implementation

Autogenerated
                      seafox.xpi
                elementAttributeMapping.js

                        parser.js
Autogenerated

                                 <ul>...</ul>
 HTML Elements


                      WAHtmlCanvas >> #unorderedList
                         <tag class=”title”>...</tag>
Elements Attributes


                        WATagBrush >> #class: ‘title’
Implementation
    Plan #1

   WAHtmlCanvas >> #unorderedList
      ^ self brush: WAUnorderedListTag new



    WAUnorderedListTag >> #tag
     ^ ’ul’
Implementation
       Plan #1
WAHtmlCanvas >> #code
   ^ self tag: ‘code’

WAHtmlCanvas >> #blockquote
   ^ self tag: ‘blockquote’
     .
     .
     .
     .
Implementation #2

brushMethodWrapper := ObjectAsMethodWrapper installOn: WAHtmlCanvas
  selector: #brush:.

brushMethodWrapper preblock: [:aSel :someArgs :aRec |
  brush := someArgs first].
Implementation fudges

• Ignore: WAPopupAnchorTag,
  WAColorInputTag,WAImageMapTag,
  WABasicFormTag......
• WAHeadingTag
• #title: #script: #style:
Outstanding
• 0.1 release
• mapping isn’t perfect:
  html div "unmapped attribute->"
  attributeAt: 'lang' put: 'en-GB';

• More thanproblems:
   Compiler
             256 literalsreferenced.
  You must split or otherwise
  simplify this method
Future
• Integration with firebug
• Bug fixes; entity mappings...
• Syntax colour highlighting
• Experiment serialising the DOM as JSON
  into Smalltalk then writing the parser in
  Smalltalk
Where to find Seafox

• http://www.squeaksource.com/Seafox
• http://seafox.seasidehosting.st/
• http://addons.mozilla.org/
Thanks

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Webpack slides
Webpack slidesWebpack slides
Webpack slides
 
Webpack
WebpackWebpack
Webpack
 
Webpack
Webpack Webpack
Webpack
 
On Demand Javascript - Scalecamp 2009
On Demand Javascript - Scalecamp 2009On Demand Javascript - Scalecamp 2009
On Demand Javascript - Scalecamp 2009
 
Bundle your modules with Webpack
Bundle your modules with WebpackBundle your modules with Webpack
Bundle your modules with Webpack
 
ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!ServiceWorker: New game changer is coming!
ServiceWorker: New game changer is coming!
 
Developing large scale JavaScript applications
Developing large scale JavaScript applicationsDeveloping large scale JavaScript applications
Developing large scale JavaScript applications
 
Webpack Introduction
Webpack IntroductionWebpack Introduction
Webpack Introduction
 
Node, express & sails
Node, express & sailsNode, express & sails
Node, express & sails
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
Angular Lazy Loading and Resolve (Route Resolver)
Angular Lazy Loading and Resolve (Route Resolver)Angular Lazy Loading and Resolve (Route Resolver)
Angular Lazy Loading and Resolve (Route Resolver)
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpack
 
Introduction to rails
Introduction to railsIntroduction to rails
Introduction to rails
 
Optimizing AngularJS Application
Optimizing AngularJS ApplicationOptimizing AngularJS Application
Optimizing AngularJS Application
 
Angular2 ecosystem
Angular2 ecosystemAngular2 ecosystem
Angular2 ecosystem
 
Deploy like a pro!
Deploy like a pro!Deploy like a pro!
Deploy like a pro!
 
Js unit testing
Js unit testingJs unit testing
Js unit testing
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
 
Thomas Fuchs Presentation
Thomas Fuchs PresentationThomas Fuchs Presentation
Thomas Fuchs Presentation
 

Semelhante a Seafox

Rails Performance Tricks and Treats
Rails Performance Tricks and TreatsRails Performance Tricks and Treats
Rails Performance Tricks and Treats
Marshall Yount
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
Ontico
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
Frank Rousseau
 

Semelhante a Seafox (20)

Angular SEO
Angular SEO Angular SEO
Angular SEO
 
Rails Performance Tricks and Treats
Rails Performance Tricks and TreatsRails Performance Tricks and Treats
Rails Performance Tricks and Treats
 
Progressive Downloads and Rendering
Progressive Downloads and RenderingProgressive Downloads and Rendering
Progressive Downloads and Rendering
 
Vue 淺談前端建置工具
Vue 淺談前端建置工具Vue 淺談前端建置工具
Vue 淺談前端建置工具
 
JQuery
JQueryJQuery
JQuery
 
JQuery
JQueryJQuery
JQuery
 
Fluent 2012 v2
Fluent 2012   v2Fluent 2012   v2
Fluent 2012 v2
 
DirectToWeb 2.0
DirectToWeb 2.0DirectToWeb 2.0
DirectToWeb 2.0
 
JavaScript 2.0 in Dreamweaver CS4
JavaScript 2.0 in Dreamweaver CS4JavaScript 2.0 in Dreamweaver CS4
JavaScript 2.0 in Dreamweaver CS4
 
Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)Progressive downloads and rendering (Stoyan Stefanov)
Progressive downloads and rendering (Stoyan Stefanov)
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
javascript-basics.ppt
javascript-basics.pptjavascript-basics.ppt
javascript-basics.ppt
 
Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - Introduction
 
JS & NodeJS - An Introduction
JS & NodeJS - An IntroductionJS & NodeJS - An Introduction
JS & NodeJS - An Introduction
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Rapid development with Rails
Rapid development with RailsRapid development with Rails
Rapid development with Rails
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
 
Awesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescriptAwesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescript
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 

Seafox

  • 1. Seafox + Nick Ager
  • 4. Why #2 - workflow Seaside Dreamweaver ? Graphic designer Seaside developer
  • 5. Implementation Ideas 1. Dreamweaver plug-in 2. Smalltalk HTML parser 3. Firefox plugin
  • 6. Implementation Autogenerated seafox.xpi elementAttributeMapping.js parser.js
  • 7. Autogenerated <ul>...</ul> HTML Elements WAHtmlCanvas >> #unorderedList <tag class=”title”>...</tag> Elements Attributes WATagBrush >> #class: ‘title’
  • 8. Implementation Plan #1 WAHtmlCanvas >> #unorderedList ^ self brush: WAUnorderedListTag new WAUnorderedListTag >> #tag ^ ’ul’
  • 9. Implementation Plan #1 WAHtmlCanvas >> #code ^ self tag: ‘code’ WAHtmlCanvas >> #blockquote ^ self tag: ‘blockquote’ . . . .
  • 10. Implementation #2 brushMethodWrapper := ObjectAsMethodWrapper installOn: WAHtmlCanvas selector: #brush:. brushMethodWrapper preblock: [:aSel :someArgs :aRec | brush := someArgs first].
  • 11. Implementation fudges • Ignore: WAPopupAnchorTag, WAColorInputTag,WAImageMapTag, WABasicFormTag...... • WAHeadingTag • #title: #script: #style:
  • 12. Outstanding • 0.1 release • mapping isn’t perfect: html div "unmapped attribute->" attributeAt: 'lang' put: 'en-GB'; • More thanproblems: Compiler 256 literalsreferenced. You must split or otherwise simplify this method
  • 13. Future • Integration with firebug • Bug fixes; entity mappings... • Syntax colour highlighting • Experiment serialising the DOM as JSON into Smalltalk then writing the parser in Smalltalk
  • 14. Where to find Seafox • http://www.squeaksource.com/Seafox • http://seafox.seasidehosting.st/ • http://addons.mozilla.org/

Notas do Editor

  1. \n
  2. Show round trip WAWelcome -&gt; seafox -&gt; Seaside\n
  3. I struggled when I was new to Seaside finding and remembering the HTML -&gt; Seaside render method translations\n
  4. \n
  5. Dreamweaver - subset of the community\nSmalltalk HTML parser - although Squeak source contains a couple of parsers they look as though they hadn&amp;#x2019;t been updated for a while\n\nGreat HTML parse in Firefox - lets leverage that. It works and it&amp;#x2019;s well tested.\n
  6. browser.js - is a parser\n\nOther files:\nbrowser.css\nbrowser.xul\nseasideicon.png\nchrome.manifest\ninstall.rdf\n\n
  7. Problem is map html elements into seaside methods\n
  8. \n
  9. WAGenericTag\n
  10. \n
  11. \n
  12. \n
  13. \n
  14. It shows the mappings\nConfigurationOfSeafox - http://www.squeaksource.com/MetacelloRepository\n\n
  15. Go and grab it, let me know if you think it&amp;#x2019;s useful and help me fix it...\n