예제 #1
0
파일: html2.c 프로젝트: Shayan-To/bluefish
void new_css_dialog(GtkWidget *wid, Tbfwin *bfwin) {
	Tcs3_destination dest;
	Tcs3_diag *diag;
	gint sel_start, sel_end;
	gboolean has_selection;

	dest.dest_type = textbox;
	dest.entry = NULL;
	dest.doc = bfwin->current_document;
	if (!doc_get_selection(dest.doc, &sel_start, &sel_end)) {
		dest.doc_start = -1;
		dest.doc_end = -1;
		has_selection = FALSE;
	} else {
		has_selection = TRUE;
		dest.doc_start = sel_start;
		dest.doc_end = sel_end;
	}
	if (dest.doc_start > dest.doc_end) {
		gint swap = dest.doc_start;
		dest.doc_start = dest.doc_end;
		dest.doc_end = swap;
	}

	diag = css_diag(dest, multistyle, bfwin->main_window, FALSE);
	if (has_selection) {
		gchar *data;

		data = doc_get_chars(dest.doc, sel_start, sel_end);
		DEBUG_MSG("new_css_dialog, data=%p\n", data);
		css_parse(diag, data);
		g_free(data);
	}
}
예제 #2
0
std::vector< HtmlTag* > HtmlParser::findAll(const std::string& query)
{
  std::cout << query << std::endl;

  //read the html code - each tag will be one field in std::vector
  YY_BUFFER_STATE bp;
  CssSPData cssSPData;
  cssSPData.htmlCode=htmlCode;

#if defined YYDEBUG && YYDEBUG==1
  css_debug=0;
#endif

  yyscan_t scanner;
  css_lex_init_extra(&cssSPData, &scanner);

  bp=css__scan_string(query.data(), scanner);
  css__switch_to_buffer(bp, scanner);
  css_parse(&cssSPData, scanner);

  css__delete_buffer(bp, scanner);
  css_lex_destroy(scanner);

  std::vector<HtmlTag *> ret;   //convert list of iterators to pointers
  for (const SearchListElement &i: cssSPData.results.getList())
    ret.push_back(const_cast<HtmlTag*>(&(*i)) ); //take of constness

  return ret;
}
예제 #3
0
int sslvpn_rewrite(enum __sslvpn_rewrite_type__ type,
	const char * string,int length,char * output, int size,const char* path)
{
	CSSParser * csp ;
	JSParser  * jsp ;
	HTMLParser* hp  ;
	int ret = -1 ;

	switch(type)
	{
		case SSLVPN_RW_CSS:
			csp = css_parser_new();
			csp->scanner->string = csp->rewriter->string = (u8*)string;
			csp->scanner->length = csp->rewriter->length = (u32)length;
			csp->rewriter->path  = (u8*)path;
			if( css_parse(csp,CPM_FILE) )
			{
				ret = 0 ;
				finalStringOutput(csp->rewriter->rw_token,(u8*)string,(u32)length,output,size);
			}
			css_parser_free(csp);
			break;
		case SSLVPN_RW_XML:
		case SSLVPN_RW_HTML:
			hp = html_parser_new((u8*)string,(u32)length);
			hp->rewriter->path  = (u8*)path;
			if( html_parse(hp) )
			{
				ret = 0 ;
				finalStringOutput(hp->rewriter->rw_token,(u8*)string,(u32)length,output,size);
			}
			html_parser_free(hp);
			break;
		case SSLVPN_RW_JAVA:
			jsp = js_parser_new();
			jsp->scanner->string = jsp->rewriter->string = (u8*)string ;
			jsp->scanner->length = jsp->rewriter->length = (u32)length ;
			jsp->rewriter->path  = (u8*)path;
			parse(jsp,JSS_NONE);

			ret = 0 ;
			finalStringOutput(jsp->rewriter->rw_token,(u8*)string,(u32)length,output,size);

			js_parser_free(jsp);
		case SSLVPN_RW_ERROR:
		default:break;
	}

	return ret;
}
예제 #4
0
int main(int argc, char *argv[]) {

	css_ruleset *style;// = css_load_file("config.css");
	css_parser *state = css_parser_create();

	css_parse(state, css, sizeof(css));

	style = css_parser_done(state);

	css_fprintf(stdout, style);

	css_free(style);

	return 0;
}
예제 #5
0
파일: html2.c 프로젝트: Shayan-To/bluefish
static void style_but_clicked_lcb(GtkWidget * widget, GtkWidget * which_entry)
{
	Tcs3_destination dest;
	Tcs3_diag *diag;
	gchar *data;
	GtkWidget *win;

	dest.dest_type = entry;
	dest.entry = which_entry;
	dest.doc = NULL;

	win = gtk_widget_get_toplevel(which_entry);
	diag = css_diag(dest, onestyle, win, TRUE);
	data = gtk_editable_get_chars(GTK_EDITABLE(which_entry), 0, -1);
	css_parse(diag, data);
	g_free(data);
}
예제 #6
0
파일: record.c 프로젝트: millken/zhuxianB30
extern void __rw_css(LimitRewriter *_this,u32 begin,u32 length,s32 place)
{
    u32 endp ;
    CSSParser * csp ;
    if( _this->string[begin] == '\'' || _this->string[begin] == '\"' )
    {
        begin++;
        length-=2 ;
    }

    endp = begin + length ;


    csp = css_parser_new_by(_this->rw_token,_this->string,begin,endp);
    csp->rewriter->path  = _this->path ;
    css_parse(csp,(CSSParseMode)place);
    css_parser_free(csp);



}
예제 #7
0
css_ruleset* css_load_file(const char *filename) {

	css_ruleset *style = NULL;
	css_parser *state;
	FILE *f;

	char buf[1024];
	int n, err;

	f = fopen(filename, "r");
	if (f == NULL) return NULL; /* Failed to open file */

	state = css_parser_create();
	if (state == NULL) { /* Failed to malloc */
		fclose(f);
		return NULL;
	}

	/* Read file */
	while (!feof(f)) {

		n = fread(buf, 1, sizeof(buf), f);

		err = css_parse(state, buf, n);

		if (err) {
			/* Abnormal termination */
			fclose(f);
			css_parser_done(state);
			return NULL;
		}

	}

	/* Normal termination */
	fclose(f);
	style = css_parser_done(state);
	return style;
}
예제 #8
0
파일: html2.c 프로젝트: Shayan-To/bluefish
static void style_but_for_wizard_clicked_lcb(GtkWidget * widget, GtkWidget * textview)
{
	Tcs3_destination dest;
	Tcs3_diag *diag;
	gchar *data;
	GtkWidget *win;

	dest.dest_type = wizard;
	dest.entry = textview;
	dest.doc = NULL;

	win = gtk_widget_get_toplevel(textview);
	diag = css_diag(dest, multistyle, win, TRUE);
	{
		GtkTextBuffer *buf;
		GtkTextIter itstart, itend;
		buf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
		gtk_text_buffer_get_bounds(buf,&itstart,&itend);
		data = gtk_text_buffer_get_text(buf, &itstart, &itend, FALSE);
		css_parse(diag, data);
		g_free(data);
	}
}
예제 #9
0
PUBLIC
void CSS_ConvertToJS(char * src, int32 src_count, char ** dst, int32 * dst_count)
{
    StyleBuffer sb;
    XP_Bool translated;

    *dst = NULL;
    *dst_count = 0;

    if (NULL == src || 0 == src_count)
        return;

    input_buffer = src;
    input_buffer_count = src_count;
    input_buffer_index = 0;

    css_tree_root = NULL;
    if (css_parse() != 0)
        return;

    sb = XP_NEW_ZAP(StyleBufferRec);
    if (sb == NULL)
        return;

    translated = ConvertStyleSheet(css_tree_root, sb);
    css_FreeNode(css_tree_root);
#if ALLOW_IMPORT
    if (! translated)
        EchoCSS(src, src_count, sb);
#endif

    /* The caller should free *dst. */
    *dst = sb->buffer;
    *dst_count = sb->buffer_count;
    XP_DELETE(sb);
}