SlideShare a Scribd company logo
How to create
Aptana Ruble
      2012.11.01 / 박재성
Index

 1. Aptana Ruble ?

 2. 생성하기

 3. Commands

 4. Code Assist

 5. Simple Demo

 6. Packaging & installation
1. Aptana Ruble?



 Ruble = RUby BundLE

 •   IDE와 에디터 영역의 사용 환경을 Ruby를 사
     용해 확장하는 런타임 환경을 의미

 •   TextMate bundles와 호환
2. 생성하기

 Creating a new Ruble :
 https://wiki.appcelerator.org/display/tis/Creating+a+new+Ruble

 a. Wizard :
    New > Ruby Project >




 b. Modifying existing ruble
    Commands > [Ruble Name] > Edit this bundle
2. 생성하기 : bundle.rb

 bundle.rb
 require 'ruble'

 bundle do |bundle|
   bundle.display_name = 'Test Plugin'
   bundle.author = 'My Name'
   bundle.copyright = <<END
 (c) Copyright 2011 sample.org. Distributed under MIT license.
 END

   bundle.description = <<END
 Sample description
 END

  # uncomment with the url to the git repo if one exists
  # bundle.repository = 'git@github.com:username/repo-name.git'

   # Use Commands > Bundle Development > Insert Bundle Section > Menu
   # to easily add new sections
   bundle.menu 'Test Plugin' do |menu|
     menu.command 'Swap Case'
     menu.command 'Sample Snippet'
     menu.separator
     menu.menu 'Sub Menu' do |sub_menu|
         sub_menu.command 'Sample Snippet'
     end
   end
 end
2. 생성하기 : Menu
2. 생성하기 : How command is invoked




                                         /commands/commands.rb
/bundle.rb
                                         require 'ruble'
bundle.menu 'Test Plugin' do |menu|
    menu.command 'Swap Case'             command 'Swap Case' do |cmd|
    menu.command 'Sample Snippet'          cmd.key_binding = 'SHIFT+CTRL+A'
    menu.separator                         cmd.scope = 'source'
    menu.menu 'Sub Menu' do |sub_menu|     cmd.output = :replace_selection
        sub_menu.command 'Sample           cmd.input = :selection, :word
Snippet'                                   cmd.invoke do |context|
    end                                      word = $stdin.gets
  end                                        context.exit_discard if word.nil?
end                                          print word.swapcase
                                           end
                                         end
3. Commands : scope

 •   명령이 수행되는 스코프를 지정. 스코프가 지정되지 않으면, 모든 스코프를 대상으로 실행
      Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-Scopes



 • Name Selector / Dotted Name Selector

       ex. text
     text, text.html, text.html.ruby 등의 파일명과 매칭. texts.physics는 매칭되지 않음. 프리픽스는 점(dot)
     표현 식으로 종료되는 표현 식만 매칭됨.

 • Descendant Selector

       ex. text.html source.ruby

     “text.html” 내에 존재하는 Ruby 코드 내에 에디터의 커서가 위치하는 경우
     The editor's cursor is within Ruby code which is within HTML

 • Union Selector
     콤마는 OR과 같이 수행됨. 파이프 연산자는 콤마 연산자 보다 연산자의 우선 순위에서 뒤쳐짐

       ex. text.html.ruby, text.html source.ruby
           text.html.ruby | text.html source.ruby
3. Commands : scope (cont’d)
 • Intersection Selector
     2개의 조건이 부합되는 경우에만

       ex. text & source

 • Grouping
     그룹핑

       ex. source & (js | ruby)

 • Negative Lookahead

       ex. text.html – source.ruby
     "source.ruby " 와 매칭되지 않는 모든 "text.html" 스코프


                           Operator   Name(s)
                           ()         Parentheses, Group
                           &          Ampersand, Intersection
 •    연산자 우선 순위
                           <space>    Descendant
                           -          Negative Lookahead, Asymmetric Difference
                           ,          Comma, Or, Union
                           |          Pipe, Or, Union
3. Commands : input

 •       명령이 실행되는 대상의 입력 정의 (INPUT_SPECIFIER에 따름)
         Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-INPUTSPECIFIER




 Specifier                         Description
 :selection                        selected text in the editor
 :left_character                   the character to the immediate left of the caret
 :right_character                  the character to the immediate right of the caret
 :word                             word surrounding the current caret
 :line                             the line containing the caret
 :document                         the entire current document
 :clipboard                        the contents of the clipboard
 :scope                            (NOT YET IMPLEMENTED) As in TextMate: search backwards and forwards for the first cha
                                   racter which is not matched by the scope selector of the command and use those as bou
                                   ndaries for the input.
 :input_from_console               take input from a shell window? How do we specify which console?
 :none                             no input is needed by this command. When encountered in the multiple symbol specifie
                                   r case, this symbol always terminates fallback evaluation
 :selected_lines                   I'm not sure what this does or how it differs from :selection!!!
3. Commands : output

 •   명령의 수행결과 출력대상 정의 (OUTPUT_SPECIFIER에 따름)
     Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-OUTPUTSPECIFIER



Specifier                     Description
:insert_as_text               insert text at the caret position. If there is a selection, the text is inserted immediately foll
                              owing the selection and the selection is lost.
:insert_as_snippet            as with :insert_as_text, but the output is interpreted as snippet expansion text
:replace_selection            replace the currently selected text with the output. If no text is selected, this is equivalent
                              to the :insert_as_text specifier
:replace_document             replace the entire document with the output
:copy_to_clipboard            replace the contents of the clipboard with the output
:show_as_html                 open an html browser window and intepret the output as html
:show_as_tooltip              show a tooltip containing the output
:create_new_document          create a new editor document containing the output
:output_to_console            display the output in a console. HOW DO WE SPECIFY WHICH CONSOLE
:discard                      throw any output away
:replace_selected_lines       what does this do? probably unnecessary
:replace_line                 replace the line around the caret. probably unnecessary
:replace_word                 replace the word around the caret. probably unnecessary
3. Commands : key_binding

•    명령 수행 단축키. 플랫폼에 따라 다르게 지정할 수
     도 있음
                                                                        Key           ...            ...
Specification :
https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSp   ARROW_DOWN    F1             NUMPAD_0
ecification-KeyBindings                                                 ARROW_LEFT    F2             NUMPAD_1
                                                                        ARROW_RIGHT   F3             NUMPAD_2
                                                                        ARROW_UP      F4             NUMPAD_3
                                                                        BREAK         F5             NUMPAD_4
Shortcut            Platform             Key                            BS            F6             NUMPAD_5
M1                  OS X                 COMMAND                        CAPS_LOCK     F7             NUMPAD_6
M1                  Other Platforms CONTROL (CTRL)                      CR            F8             NUMPAD_7
M2                  All Platforms        SHIFT                          DEL           F9             NUMPAD_8
M3                  OS X                 OPTION                         END           F10            NUMPAD_9
M3                  Other Platforms ALT                                 ESC           F11            NUMPAD_ADD
M4                  OS X                 CONTROL (CTRL)                 HOME          F12            NUMPAD_DECIMAL
                                                                        INSERT        F13            NUMPAD_DIVIDE
                                                                        LF            F14            NUMPAD_ENTER
                                                                        FF            F15            NUMPAD_EQUAL
                                                                        NUL           PRINT_SCREEN   NUMPAD_MULTIPLY
                                                                        PAGE_UP       PAUSE          NUMPAD_SUBTRACT
                                                                        PAGE_DOWN     SCROLL_LOCK    NUM_LOCK
                                                                        SPACE         TAB            VT
3. Commands : invoke

•   실제 명령의 수행을 담당하는 코드
•   Output에 따라 Ruby, HTML 또는 shell script 등을 사용할 수 있다.

     Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-KeyBindings



    command 'Jindo API' do |cmd|
      cmd.key_binding = "ALT+SHIFT+HOME"
      cmd.output = :show_as_html
      cmd.input = :none

      cmd.invoke do |context|
        url = "file://#{File.dirname(ENV['TM_BUNDLE_SUPPORT'])}/views/ko/symbols/$A.html"
        <<-END
        <html><head><title>Jindo
    API</title><style>html,body{width:100%;height:100%}body{margin:0;padding:0}</style></h
    ead>
        <body>
          <iframe src='#{url}' marginwidth=0 marginheight=0 frameborder=0
    style='width:100%;height:100%'></iframe>
        </body>
        </html>
        END
      end
    end
4. Code Assist

 • ScriptDoc spec 소개

   - 2006년경 발표
   - Aptana가 표준화 하려던 JavaScript Documentation 명세
    http://www.scriptdoc.org/ (now has gone!)



 • ScriptDoc (SDOC) 2.0 Specification
   https://wiki.appcelerator.org/display/tis/ScriptDoc+%28SDOC%29+2.0+Specification


 • ScriptDoc XML (SDOCML) 2.0 Specification
   https://wiki.appcelerator.org/display/tis/ScriptDoc+XML+%28SDOCML%29+2.0+Specification
4. Code Assist : ScriptDoc XML

 <?xml version="1.0" encoding="UTF-8"?>
 <javascript>

 <!-- $Jindo -->
 <class type="$Jindo">
   <constructors>
      <constructor>
         <description>$Jindo 객체를 반환한다. $Jindo 객체는 프레임웍에 대한 정보와 유틸리티 함수를 제공한
 다.</description>
         <return-types>
            <return-type type="$Jindo.API" />
         </return-types>
      </constructor>
   </constructors>
 </class>

 <class type="$Jindo.API" superclass="$Jindo">
   <properties>
      <property name="version" type="Number" scope="instance">
         <description>Jindo 버전</description>
      </property>
   </properties>
 </class>

 ...

 </javascript>
4. Code Assist : Enable usage


 bundle.rb
  bundle.project_build_path["Jindo Code Assist"] = "#{File.dirname($0)}/support/jindo.sdocml"




 Project > properties > Project Build Path
5. Simple demo
6. Packaging & installation


  • zip으로 디렉토리를 모두 압축

    설치는 압축된 파일을 플랫폼에 따라 아래 위치에 압축해제

    a. Windows : C:Users사용자Aptana Rubles
    b. MacOS : /User/사용자/Documents/Aptana Rubles/


  • 몇 가지 기억할 점

    - cache.*.yml은 패키징에 포함시키면 안된다.
    - command의 코드에 따라 운영체제에 따른 분기처리가 필요할 수도 있다.
Reference

  Documentation
    https://wiki.appcelerator.org/display/tis/Rubles

  Ruble Specification
    https://wiki.appcelerator.org/display/tis/Ruble+Specification
Thanks.


http://opalang.org/assets/img/psy-jumping.gif

More Related Content

What's hot

perltut
perltutperltut
perltut
tutorialsruby
 
Characters formats &amp; strimgs
Characters formats  &amp; strimgsCharacters formats  &amp; strimgs
Characters formats &amp; strimgs
Weslley Assis
 
Php opcodes sep2008
Php opcodes sep2008Php opcodes sep2008
Php opcodes sep2008
bengiuliano
 
Quick tour of PHP from inside
Quick tour of PHP from insideQuick tour of PHP from inside
Quick tour of PHP from inside
julien pauli
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
julien pauli
 
429 e8d01
429 e8d01429 e8d01
429 e8d01
vipinck2008
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
omprakash_bagrao_prdxn
 
slidesharenew1
slidesharenew1slidesharenew1
slidesharenew1
truptitasol
 
C++ Quick Reference Sheet from Hoomanb.com
C++ Quick Reference Sheet from Hoomanb.comC++ Quick Reference Sheet from Hoomanb.com
C++ Quick Reference Sheet from Hoomanb.com
FrescatiStory
 
Falcon初印象
Falcon初印象Falcon初印象
Falcon初印象
勇浩 赖
 
PHP MATERIAL
PHP MATERIALPHP MATERIAL
PHP MATERIAL
zatax
 
SQL -PHP Tutorial
SQL -PHP TutorialSQL -PHP Tutorial
SQL -PHP Tutorial
Information Technology
 
C Reference Card (Ansi) 2
C Reference Card (Ansi) 2C Reference Card (Ansi) 2
C Reference Card (Ansi) 2
Regis Magalhães
 
ANSI C REFERENCE CARD
ANSI C REFERENCE CARDANSI C REFERENCE CARD
ANSI C REFERENCE CARD
Tia Ricci
 
C reference card
C reference cardC reference card
C reference card
Kolej Vokasional Tawau
 
Shell Script Linux
Shell Script LinuxShell Script Linux
Shell Script Linux
Wellington Oliveira
 
Lecture3 php by okello erick
Lecture3 php by okello erickLecture3 php by okello erick
Lecture3 php by okello erick
okelloerick
 

What's hot (17)

perltut
perltutperltut
perltut
 
Characters formats &amp; strimgs
Characters formats  &amp; strimgsCharacters formats  &amp; strimgs
Characters formats &amp; strimgs
 
Php opcodes sep2008
Php opcodes sep2008Php opcodes sep2008
Php opcodes sep2008
 
Quick tour of PHP from inside
Quick tour of PHP from insideQuick tour of PHP from inside
Quick tour of PHP from inside
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
 
429 e8d01
429 e8d01429 e8d01
429 e8d01
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 
slidesharenew1
slidesharenew1slidesharenew1
slidesharenew1
 
C++ Quick Reference Sheet from Hoomanb.com
C++ Quick Reference Sheet from Hoomanb.comC++ Quick Reference Sheet from Hoomanb.com
C++ Quick Reference Sheet from Hoomanb.com
 
Falcon初印象
Falcon初印象Falcon初印象
Falcon初印象
 
PHP MATERIAL
PHP MATERIALPHP MATERIAL
PHP MATERIAL
 
SQL -PHP Tutorial
SQL -PHP TutorialSQL -PHP Tutorial
SQL -PHP Tutorial
 
C Reference Card (Ansi) 2
C Reference Card (Ansi) 2C Reference Card (Ansi) 2
C Reference Card (Ansi) 2
 
ANSI C REFERENCE CARD
ANSI C REFERENCE CARDANSI C REFERENCE CARD
ANSI C REFERENCE CARD
 
C reference card
C reference cardC reference card
C reference card
 
Shell Script Linux
Shell Script LinuxShell Script Linux
Shell Script Linux
 
Lecture3 php by okello erick
Lecture3 php by okello erickLecture3 php by okello erick
Lecture3 php by okello erick
 

Viewers also liked

Ct Cardiac Nvmbr2012
Ct Cardiac Nvmbr2012Ct Cardiac Nvmbr2012
Ct Cardiac Nvmbr2012
Erik R. Ranschaert, MD, PhD
 
S 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt lineS 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt line
Jessica xiong
 
Case 3
Case 3Case 3
Case 3
Ulhas Mali
 
Establishing effective ort requirements
Establishing effective ort requirementsEstablishing effective ort requirements
Establishing effective ort requirements
Accendo Reliability
 
S 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt lineS 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt line
Jessica xiong
 
Discussion on Support Long Range Cell Operation for GCSE (S1-141011)
Discussion on Support Long Range Cell Operation for GCSE (S1-141011)Discussion on Support Long Range Cell Operation for GCSE (S1-141011)
Discussion on Support Long Range Cell Operation for GCSE (S1-141011)
Yi-Hsueh Tsai
 
PRSENTATIION ON INTERNET
PRSENTATIION ON INTERNETPRSENTATIION ON INTERNET
PRSENTATIION ON INTERNET
Shashank Choudhary
 
Emergency Teleradiology SER 2015
Emergency Teleradiology SER 2015Emergency Teleradiology SER 2015
Emergency Teleradiology SER 2015
Teleradiology Solutions
 
Aortic dissection
Aortic dissectionAortic dissection
Aortic dissection
Dicky A Wartono
 
Ultrasound of spinal cord in neonates Dr. Muhammad Bin Zulfiqar
Ultrasound of spinal cord in neonates Dr. Muhammad Bin ZulfiqarUltrasound of spinal cord in neonates Dr. Muhammad Bin Zulfiqar
Ultrasound of spinal cord in neonates Dr. Muhammad Bin Zulfiqar
Dr. Muhammad Bin Zulfiqar
 
Anti-hypertensive drugs for Nursing Students
Anti-hypertensive drugs for Nursing StudentsAnti-hypertensive drugs for Nursing Students
Anti-hypertensive drugs for Nursing Students
Kalaivanisathishr
 
13 aimradial2016 thu M Hestbjerg-Poulsen
13 aimradial2016 thu M Hestbjerg-Poulsen13 aimradial2016 thu M Hestbjerg-Poulsen
03 aimradial2016 fri Y Ikari
03 aimradial2016 fri Y Ikari03 aimradial2016 fri Y Ikari
12:25 Yamane - Japanese strategy
12:25 Yamane - Japanese strategy12:25 Yamane - Japanese strategy
12:25 Yamane - Japanese strategy
Euro CTO Club
 
Luca Grancini - Contrast management
Luca Grancini - Contrast management Luca Grancini - Contrast management
Luca Grancini - Contrast management
Euro CTO Club
 
LesterFranks-CompanyProfile-2015-Web
LesterFranks-CompanyProfile-2015-WebLesterFranks-CompanyProfile-2015-Web
LesterFranks-CompanyProfile-2015-Web
Justin Legg
 

Viewers also liked (16)

Ct Cardiac Nvmbr2012
Ct Cardiac Nvmbr2012Ct Cardiac Nvmbr2012
Ct Cardiac Nvmbr2012
 
S 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt lineS 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt line
 
Case 3
Case 3Case 3
Case 3
 
Establishing effective ort requirements
Establishing effective ort requirementsEstablishing effective ort requirements
Establishing effective ort requirements
 
S 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt lineS 1200-sv high end led lamp smt line
S 1200-sv high end led lamp smt line
 
Discussion on Support Long Range Cell Operation for GCSE (S1-141011)
Discussion on Support Long Range Cell Operation for GCSE (S1-141011)Discussion on Support Long Range Cell Operation for GCSE (S1-141011)
Discussion on Support Long Range Cell Operation for GCSE (S1-141011)
 
PRSENTATIION ON INTERNET
PRSENTATIION ON INTERNETPRSENTATIION ON INTERNET
PRSENTATIION ON INTERNET
 
Emergency Teleradiology SER 2015
Emergency Teleradiology SER 2015Emergency Teleradiology SER 2015
Emergency Teleradiology SER 2015
 
Aortic dissection
Aortic dissectionAortic dissection
Aortic dissection
 
Ultrasound of spinal cord in neonates Dr. Muhammad Bin Zulfiqar
Ultrasound of spinal cord in neonates Dr. Muhammad Bin ZulfiqarUltrasound of spinal cord in neonates Dr. Muhammad Bin Zulfiqar
Ultrasound of spinal cord in neonates Dr. Muhammad Bin Zulfiqar
 
Anti-hypertensive drugs for Nursing Students
Anti-hypertensive drugs for Nursing StudentsAnti-hypertensive drugs for Nursing Students
Anti-hypertensive drugs for Nursing Students
 
13 aimradial2016 thu M Hestbjerg-Poulsen
13 aimradial2016 thu M Hestbjerg-Poulsen13 aimradial2016 thu M Hestbjerg-Poulsen
13 aimradial2016 thu M Hestbjerg-Poulsen
 
03 aimradial2016 fri Y Ikari
03 aimradial2016 fri Y Ikari03 aimradial2016 fri Y Ikari
03 aimradial2016 fri Y Ikari
 
12:25 Yamane - Japanese strategy
12:25 Yamane - Japanese strategy12:25 Yamane - Japanese strategy
12:25 Yamane - Japanese strategy
 
Luca Grancini - Contrast management
Luca Grancini - Contrast management Luca Grancini - Contrast management
Luca Grancini - Contrast management
 
LesterFranks-CompanyProfile-2015-Web
LesterFranks-CompanyProfile-2015-WebLesterFranks-CompanyProfile-2015-Web
LesterFranks-CompanyProfile-2015-Web
 

Similar to How to create Aptana Ruble

C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
JavaTpoint.Com
 
Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -
LynellBull52
 
The Ring programming language version 1.10 book - Part 97 of 212
The Ring programming language version 1.10 book - Part 97 of 212The Ring programming language version 1.10 book - Part 97 of 212
The Ring programming language version 1.10 book - Part 97 of 212
Mahmoud Samir Fayed
 
Modularization & Catch Statement
Modularization & Catch StatementModularization & Catch Statement
Modularization & Catch Statement
sapdocs. info
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
Ce.Se.N.A. Security
 
Tutorial de forms 10g
Tutorial de forms 10gTutorial de forms 10g
Tutorial de forms 10g
miguel
 
Lecture 1_Functions in C.pptx
Lecture 1_Functions in C.pptxLecture 1_Functions in C.pptx
Lecture 1_Functions in C.pptx
KhurramKhan173
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machine
julien pauli
 
Python Functions.pptx
Python Functions.pptxPython Functions.pptx
Python Functions.pptx
AnuragBharti27
 
Python Functions.pptx
Python Functions.pptxPython Functions.pptx
Python Functions.pptx
AnuragBharti27
 
OpenGL SC 2.0 Quick Reference
OpenGL SC 2.0 Quick ReferenceOpenGL SC 2.0 Quick Reference
OpenGL SC 2.0 Quick Reference
The Khronos Group Inc.
 
Hello. I was wondering if I could get some help on this C programmin.pdf
Hello. I was wondering if I could get some help on this C programmin.pdfHello. I was wondering if I could get some help on this C programmin.pdf
Hello. I was wondering if I could get some help on this C programmin.pdf
fashionfootwear1
 
C programming language tutorial
C programming language tutorial C programming language tutorial
C programming language tutorial
javaTpoint s
 
ConSteel_14_User_Manual-351-359.pdf
ConSteel_14_User_Manual-351-359.pdfConSteel_14_User_Manual-351-359.pdf
ConSteel_14_User_Manual-351-359.pdf
JuanUnafVargas
 
Chapter 5 modularization & catch statement (paradiso-a45b1d's conflicted co...
Chapter 5   modularization & catch statement (paradiso-a45b1d's conflicted co...Chapter 5   modularization & catch statement (paradiso-a45b1d's conflicted co...
Chapter 5 modularization & catch statement (paradiso-a45b1d's conflicted co...
marco_paradiso
 
Abap function module help
Abap function module helpAbap function module help
Abap function module help
Kranthi Kumar
 
Meta Object Protocols
Meta Object ProtocolsMeta Object Protocols
Meta Object Protocols
Pierre de Lacaze
 
printf tricks
printf tricksprintf tricks
printf tricks
Shaun Colley
 
Python programming variables and comment
Python programming variables and commentPython programming variables and comment
Python programming variables and comment
MalligaarjunanN
 
3. functions modules_programs (1)
3. functions modules_programs (1)3. functions modules_programs (1)
3. functions modules_programs (1)
SaraswathiTAsstProfI
 

Similar to How to create Aptana Ruble (20)

C Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpointC Programming Language Tutorial for beginners - JavaTpoint
C Programming Language Tutorial for beginners - JavaTpoint
 
Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -Compiler Design and Construction COSC 5353Project Instructions -
Compiler Design and Construction COSC 5353Project Instructions -
 
The Ring programming language version 1.10 book - Part 97 of 212
The Ring programming language version 1.10 book - Part 97 of 212The Ring programming language version 1.10 book - Part 97 of 212
The Ring programming language version 1.10 book - Part 97 of 212
 
Modularization & Catch Statement
Modularization & Catch StatementModularization & Catch Statement
Modularization & Catch Statement
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
 
Tutorial de forms 10g
Tutorial de forms 10gTutorial de forms 10g
Tutorial de forms 10g
 
Lecture 1_Functions in C.pptx
Lecture 1_Functions in C.pptxLecture 1_Functions in C.pptx
Lecture 1_Functions in C.pptx
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machine
 
Python Functions.pptx
Python Functions.pptxPython Functions.pptx
Python Functions.pptx
 
Python Functions.pptx
Python Functions.pptxPython Functions.pptx
Python Functions.pptx
 
OpenGL SC 2.0 Quick Reference
OpenGL SC 2.0 Quick ReferenceOpenGL SC 2.0 Quick Reference
OpenGL SC 2.0 Quick Reference
 
Hello. I was wondering if I could get some help on this C programmin.pdf
Hello. I was wondering if I could get some help on this C programmin.pdfHello. I was wondering if I could get some help on this C programmin.pdf
Hello. I was wondering if I could get some help on this C programmin.pdf
 
C programming language tutorial
C programming language tutorial C programming language tutorial
C programming language tutorial
 
ConSteel_14_User_Manual-351-359.pdf
ConSteel_14_User_Manual-351-359.pdfConSteel_14_User_Manual-351-359.pdf
ConSteel_14_User_Manual-351-359.pdf
 
Chapter 5 modularization & catch statement (paradiso-a45b1d's conflicted co...
Chapter 5   modularization & catch statement (paradiso-a45b1d's conflicted co...Chapter 5   modularization & catch statement (paradiso-a45b1d's conflicted co...
Chapter 5 modularization & catch statement (paradiso-a45b1d's conflicted co...
 
Abap function module help
Abap function module helpAbap function module help
Abap function module help
 
Meta Object Protocols
Meta Object ProtocolsMeta Object Protocols
Meta Object Protocols
 
printf tricks
printf tricksprintf tricks
printf tricks
 
Python programming variables and comment
Python programming variables and commentPython programming variables and comment
Python programming variables and comment
 
3. functions modules_programs (1)
3. functions modules_programs (1)3. functions modules_programs (1)
3. functions modules_programs (1)
 

More from Jae Sung Park

[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes
Jae Sung Park
 
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
Jae Sung Park
 
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
Jae Sung Park
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
Jae Sung Park
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
Jae Sung Park
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
Jae Sung Park
 
How jQuery event works
How jQuery event worksHow jQuery event works
How jQuery event works
Jae Sung Park
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
Jae Sung Park
 
현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular js
Jae Sung Park
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
Jae Sung Park
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & PolymerJae Sung Park
 
모바일 웹 디버깅
모바일 웹 디버깅모바일 웹 디버깅
모바일 웹 디버깅
Jae Sung Park
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
Jae Sung Park
 
CSS Functions
CSS FunctionsCSS Functions
CSS Functions
Jae Sung Park
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
Jae Sung Park
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
Jae Sung Park
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 

More from Jae Sung Park (20)

[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes
 
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
 
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
 
How jQuery event works
How jQuery event worksHow jQuery event works
How jQuery event works
 
iOS9 소개
iOS9 소개iOS9 소개
iOS9 소개
 
현실적 Angular js
현실적 Angular js현실적 Angular js
현실적 Angular js
 
가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
 
Web Components & Polymer
Web Components & PolymerWeb Components & Polymer
Web Components & Polymer
 
모바일 웹 디버깅
모바일 웹 디버깅모바일 웹 디버깅
모바일 웹 디버깅
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
CSS Functions
CSS FunctionsCSS Functions
CSS Functions
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
 
Web Audio API
Web Audio APIWeb Audio API
Web Audio API
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 

Recently uploaded

Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 

Recently uploaded (20)

Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 

How to create Aptana Ruble

  • 1. How to create Aptana Ruble 2012.11.01 / 박재성
  • 2. Index 1. Aptana Ruble ? 2. 생성하기 3. Commands 4. Code Assist 5. Simple Demo 6. Packaging & installation
  • 3. 1. Aptana Ruble? Ruble = RUby BundLE • IDE와 에디터 영역의 사용 환경을 Ruby를 사 용해 확장하는 런타임 환경을 의미 • TextMate bundles와 호환
  • 4. 2. 생성하기 Creating a new Ruble : https://wiki.appcelerator.org/display/tis/Creating+a+new+Ruble a. Wizard : New > Ruby Project > b. Modifying existing ruble Commands > [Ruble Name] > Edit this bundle
  • 5. 2. 생성하기 : bundle.rb bundle.rb require 'ruble' bundle do |bundle| bundle.display_name = 'Test Plugin' bundle.author = 'My Name' bundle.copyright = <<END (c) Copyright 2011 sample.org. Distributed under MIT license. END bundle.description = <<END Sample description END # uncomment with the url to the git repo if one exists # bundle.repository = 'git@github.com:username/repo-name.git' # Use Commands > Bundle Development > Insert Bundle Section > Menu # to easily add new sections bundle.menu 'Test Plugin' do |menu| menu.command 'Swap Case' menu.command 'Sample Snippet' menu.separator menu.menu 'Sub Menu' do |sub_menu| sub_menu.command 'Sample Snippet' end end end
  • 7. 2. 생성하기 : How command is invoked /commands/commands.rb /bundle.rb require 'ruble' bundle.menu 'Test Plugin' do |menu| menu.command 'Swap Case' command 'Swap Case' do |cmd| menu.command 'Sample Snippet' cmd.key_binding = 'SHIFT+CTRL+A' menu.separator cmd.scope = 'source' menu.menu 'Sub Menu' do |sub_menu| cmd.output = :replace_selection sub_menu.command 'Sample cmd.input = :selection, :word Snippet' cmd.invoke do |context| end word = $stdin.gets end context.exit_discard if word.nil? end print word.swapcase end end
  • 8. 3. Commands : scope • 명령이 수행되는 스코프를 지정. 스코프가 지정되지 않으면, 모든 스코프를 대상으로 실행 Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-Scopes • Name Selector / Dotted Name Selector ex. text text, text.html, text.html.ruby 등의 파일명과 매칭. texts.physics는 매칭되지 않음. 프리픽스는 점(dot) 표현 식으로 종료되는 표현 식만 매칭됨. • Descendant Selector ex. text.html source.ruby “text.html” 내에 존재하는 Ruby 코드 내에 에디터의 커서가 위치하는 경우 The editor's cursor is within Ruby code which is within HTML • Union Selector 콤마는 OR과 같이 수행됨. 파이프 연산자는 콤마 연산자 보다 연산자의 우선 순위에서 뒤쳐짐 ex. text.html.ruby, text.html source.ruby text.html.ruby | text.html source.ruby
  • 9. 3. Commands : scope (cont’d) • Intersection Selector 2개의 조건이 부합되는 경우에만 ex. text & source • Grouping 그룹핑 ex. source & (js | ruby) • Negative Lookahead ex. text.html – source.ruby "source.ruby " 와 매칭되지 않는 모든 "text.html" 스코프 Operator Name(s) () Parentheses, Group & Ampersand, Intersection • 연산자 우선 순위 <space> Descendant - Negative Lookahead, Asymmetric Difference , Comma, Or, Union | Pipe, Or, Union
  • 10. 3. Commands : input • 명령이 실행되는 대상의 입력 정의 (INPUT_SPECIFIER에 따름) Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-INPUTSPECIFIER Specifier Description :selection selected text in the editor :left_character the character to the immediate left of the caret :right_character the character to the immediate right of the caret :word word surrounding the current caret :line the line containing the caret :document the entire current document :clipboard the contents of the clipboard :scope (NOT YET IMPLEMENTED) As in TextMate: search backwards and forwards for the first cha racter which is not matched by the scope selector of the command and use those as bou ndaries for the input. :input_from_console take input from a shell window? How do we specify which console? :none no input is needed by this command. When encountered in the multiple symbol specifie r case, this symbol always terminates fallback evaluation :selected_lines I'm not sure what this does or how it differs from :selection!!!
  • 11. 3. Commands : output • 명령의 수행결과 출력대상 정의 (OUTPUT_SPECIFIER에 따름) Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-OUTPUTSPECIFIER Specifier Description :insert_as_text insert text at the caret position. If there is a selection, the text is inserted immediately foll owing the selection and the selection is lost. :insert_as_snippet as with :insert_as_text, but the output is interpreted as snippet expansion text :replace_selection replace the currently selected text with the output. If no text is selected, this is equivalent to the :insert_as_text specifier :replace_document replace the entire document with the output :copy_to_clipboard replace the contents of the clipboard with the output :show_as_html open an html browser window and intepret the output as html :show_as_tooltip show a tooltip containing the output :create_new_document create a new editor document containing the output :output_to_console display the output in a console. HOW DO WE SPECIFY WHICH CONSOLE :discard throw any output away :replace_selected_lines what does this do? probably unnecessary :replace_line replace the line around the caret. probably unnecessary :replace_word replace the word around the caret. probably unnecessary
  • 12. 3. Commands : key_binding • 명령 수행 단축키. 플랫폼에 따라 다르게 지정할 수 도 있음 Key ... ... Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSp ARROW_DOWN F1 NUMPAD_0 ecification-KeyBindings ARROW_LEFT F2 NUMPAD_1 ARROW_RIGHT F3 NUMPAD_2 ARROW_UP F4 NUMPAD_3 BREAK F5 NUMPAD_4 Shortcut Platform Key BS F6 NUMPAD_5 M1 OS X COMMAND CAPS_LOCK F7 NUMPAD_6 M1 Other Platforms CONTROL (CTRL) CR F8 NUMPAD_7 M2 All Platforms SHIFT DEL F9 NUMPAD_8 M3 OS X OPTION END F10 NUMPAD_9 M3 Other Platforms ALT ESC F11 NUMPAD_ADD M4 OS X CONTROL (CTRL) HOME F12 NUMPAD_DECIMAL INSERT F13 NUMPAD_DIVIDE LF F14 NUMPAD_ENTER FF F15 NUMPAD_EQUAL NUL PRINT_SCREEN NUMPAD_MULTIPLY PAGE_UP PAUSE NUMPAD_SUBTRACT PAGE_DOWN SCROLL_LOCK NUM_LOCK SPACE TAB VT
  • 13. 3. Commands : invoke • 실제 명령의 수행을 담당하는 코드 • Output에 따라 Ruby, HTML 또는 shell script 등을 사용할 수 있다. Specification : https://wiki.appcelerator.org/display/tis/Ruble+Specification#RubleSpecification-KeyBindings command 'Jindo API' do |cmd| cmd.key_binding = "ALT+SHIFT+HOME" cmd.output = :show_as_html cmd.input = :none cmd.invoke do |context| url = "file://#{File.dirname(ENV['TM_BUNDLE_SUPPORT'])}/views/ko/symbols/$A.html" <<-END <html><head><title>Jindo API</title><style>html,body{width:100%;height:100%}body{margin:0;padding:0}</style></h ead> <body> <iframe src='#{url}' marginwidth=0 marginheight=0 frameborder=0 style='width:100%;height:100%'></iframe> </body> </html> END end end
  • 14. 4. Code Assist • ScriptDoc spec 소개 - 2006년경 발표 - Aptana가 표준화 하려던 JavaScript Documentation 명세 http://www.scriptdoc.org/ (now has gone!) • ScriptDoc (SDOC) 2.0 Specification https://wiki.appcelerator.org/display/tis/ScriptDoc+%28SDOC%29+2.0+Specification • ScriptDoc XML (SDOCML) 2.0 Specification https://wiki.appcelerator.org/display/tis/ScriptDoc+XML+%28SDOCML%29+2.0+Specification
  • 15. 4. Code Assist : ScriptDoc XML <?xml version="1.0" encoding="UTF-8"?> <javascript> <!-- $Jindo --> <class type="$Jindo"> <constructors> <constructor> <description>$Jindo 객체를 반환한다. $Jindo 객체는 프레임웍에 대한 정보와 유틸리티 함수를 제공한 다.</description> <return-types> <return-type type="$Jindo.API" /> </return-types> </constructor> </constructors> </class> <class type="$Jindo.API" superclass="$Jindo"> <properties> <property name="version" type="Number" scope="instance"> <description>Jindo 버전</description> </property> </properties> </class> ... </javascript>
  • 16. 4. Code Assist : Enable usage bundle.rb bundle.project_build_path["Jindo Code Assist"] = "#{File.dirname($0)}/support/jindo.sdocml" Project > properties > Project Build Path
  • 18. 6. Packaging & installation • zip으로 디렉토리를 모두 압축 설치는 압축된 파일을 플랫폼에 따라 아래 위치에 압축해제 a. Windows : C:Users사용자Aptana Rubles b. MacOS : /User/사용자/Documents/Aptana Rubles/ • 몇 가지 기억할 점 - cache.*.yml은 패키징에 포함시키면 안된다. - command의 코드에 따라 운영체제에 따른 분기처리가 필요할 수도 있다.
  • 19. Reference  Documentation  https://wiki.appcelerator.org/display/tis/Rubles  Ruble Specification  https://wiki.appcelerator.org/display/tis/Ruble+Specification