2013-08-13 5 views
0

사용자가 포맷되지 않은 Stata 코드 입력을 받고, HTML 태그를 추가하고, 간편한 복사를 위해 전체 코드 블록을 반환 할 수있는 Shiny R 응용 프로그램을 만들고 싶습니다. 블로그 또는 웹 페이지와 같은 html 게시 장소에 붙여 넣습니다.간편한 복사 및 붙여 넣기를 위해 html 코드를 사용하는 반짝이는 html 출력 객체

이미 A Stata HTML syntax highlighter in R의 서식을 처리 할 수있는 R 코드가 있습니다. 그리고 Shiny 구현의 대부분은 매우 쉬워 보입니다. 내가 겪고있는 가장 큰 도전은 html 텍스트 박스 또는 샤이니의 서버에서 반응적인 요소를 쉽게 취할 수있는 다른 객체를 만드는 것이다. HTML을 포맷팅하지 않고 사용자에게 반환한다.

예 :

텍스트 상자를 통해

STATA 코드 입력

clear 
set obs 4000 
gen id = _n 
gen eta1 = rnormal() 
gen eta2 = rnormal() 

XX 반짝 버튼의 XX가

다른 텍스트 상자에 반환

<span style="color: #9900FF">set</span> <span style="color: #0000CC"><b>obs</b></span> 4000 
<span style="color: #0000CC"><b>gen</b></span> id = <span style="color: #9900FF">_n</span> 
<span style="color: #0000CC"><b>gen</b></span> eta1 = <span style="color: #9900FF">rnormal</span>() 
<span style="color: #0000CC"><b>gen</b></span> eta2 = <span style="color: #9900FF">rnormal</span>() 

전반적으로 제출,이 생각 일반적으로 잠재적으로 매우 간단한 대답에 대한 긴 질문입니다. 이해해 주셔서 감사합니다.

답변

2

renderText()은 HTML 태그를 구문 분석하지 않습니다. 예 : 당신이 할 경우 :

output$code <- renderText({ 

    paste0(
    '<span style="color: #9900FF">set</span> <span style="color: #0000CC"><b>obs</b></span> 4000', 
    '<span style="color: #0000CC"><b>gen</b></span> id = <span style="color: #9900FF">_n</span>', 
    '<span style="color: #0000CC"><b>gen</b></span> eta1 = <span style="color: #9900FF">rnormal</span>', 
    '<span style="color: #0000CC"><b>gen</b></span> eta2 = <span style="color: #9900FF">rnormal</span>' 
) 

}) 

을이 당신의 ui.R 인 경우 :

library(shiny) 

shinyUI(pageWithSidebar(

    headerPanel("Code"), 

    sidebarPanel(

), 

    mainPanel(
    verbatimTextOutput("code") 
) 

)) 

이 내용은 단지 텍스트를 온다.


하지만 ui.R (또는 index.html)을 게시하지 않았으므로 출력을 렌더링하는 방법을 잘 모릅니다. 생산합니다

html <- '<span>text</span>' 
x <- gsub('<', '&lt;', html) 
gsub('>', '&gt;', x) 

: 대신 구문 분석 HTML의 원시 텍스트를 표시에 문제가있는 경우 당신은 항상이 같은 &gt;&lt;><을 대체 할 수 &lt;span&gt;text&lt;/span&gt;을하고 브라우저에서 구문 분석 HTML로 표시 할 수 없습니다.

+0

오, 이런, 고마워. :) – fsmart