DSLs Internas e Ruby

  • 1,221 views
Uploaded on

Palestra que aconteceu no Rails Summit Latin America 2009, em São Paulo - Brasil.

Palestra que aconteceu no Rails Summit Latin America 2009, em São Paulo - Brasil.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,221
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. DSLs Internas e Ruby @fabiokung
  • 2. DSL? http://www.flickr.com/photos/pragdave/173640462/
  • 3. DSLs internas hoje().mais(meses(2));
  • 4. DSLs internas hoje().mais(uns(2).meses());
  • 5. Date.today + 2.months 4.weeks.ago DSLs internas
  • 6. var d1 = Hoje mais 2 meses var d2 = Amanhã menos 1 mês e mais 10 anos e mais 1 dia Scala: http://gist.github.com/207718 (by Sergio Lopes) Date.today + 2.months 4.weeks.ago DSLs internas
  • 7. DSLs externas
  • 8. Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses without topic "biology" And there are 2 courses A001, B205 with topic "biology" When I search for "biology" Then I should see the following courses: | Course code | | A001 | | B205 | DSLs externas
  • 9. o problema...
  • 10. http://www.flickr.com/photos/stephenvandyke/96983232/
  • 11. http://www.flickr.com/photos/hand-nor-glove/438290969/ 2.maneiras
  • 12. http://www.flickr.com/photos/aussiegall/759309122/ Top-Down
  • 13. http://www.flickr.com/photos/akiraikari/2657579326/ Bottom-Up
  • 14. hora de codar
  • 15. (define cdar-sequence? (automaton init [init : (c -> more)] [more : (a -> more) (d -> more) (r -> end)] [end : accept]))
  • 16. hora de codar
  • 17. http://martinfowler.com/dslwip/SemanticModel.html Semantic Model
  • 18. http://martinfowler.com/dslwip/SemanticModel.html My advice is to always use a Semantic Semantic Model
  • 19. Resumo • Module.included(klass) • obj.extend(Module) • Class.class_eval { ... } • obj.send(method) • obj.instance_eval { ... }
  • 20. E mais... • method_missing(name, *args) • Class.inherited(subclass) • lambdas, Proc • ...
  • 21. Dúvidas? Obrigado! fabio.kung @ [gmail locaweb] http://twitter.com/fabiokung