~ubuntu-branches/debian/sid/geany-plugins/sid

« back to all changes in this revision

Viewing changes to xmlsnippets/src/test-stubs.c

  • Committer: Package Import Robot
  • Author(s): Evgeni Golov, Evgeni Golov
  • Date: 2011-11-17 20:03:24 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20111117200324-8qmu6tuwjtfpv3n7
Tags: 0.21.1-1
[ Evgeni Golov ]
* [f4007f2] Imported Upstream version 0.21.1
* [5ff622d] install plugins from/to /usr/lib/<arch-triplet>/geany
* [75411d7] bump build-dep to geany 0.21
* [db92155] depend on the virtual geany-abi-XX package
* [dd84769] switch to 3.0 (quilt)
* [3ab76d7] drop readme.source
* [233d44c] refresh patch against 0.21.1
* [030bec1] add lintian override for
            documentation-package-not-architecture-independent
* [aba43d7] use debhelper compat level 9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * test-stubs.c - this file is part of XMLSnippets, a Geany plugin
 
3
 *
 
4
 * Copyright 2010 Eugene Arshinov <earshinov(at)gmail(dot)com>
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2 of the License, or
 
9
 * (at your option) any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program; if not, write to the Free Software
 
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 
19
 * MA 02110-1301, USA.
 
20
 */
 
21
 
 
22
#ifdef TEST
 
23
 
 
24
#ifdef HAVE_CONFIG_H
 
25
# include "config.h"
 
26
#endif
 
27
 
 
28
#include "test-stubs.h"
 
29
#include <ctype.h>
 
30
 
 
31
 
 
32
GHashTable *completions;
 
33
 
 
34
void test_stubs_init()
 
35
{
 
36
  completions = g_hash_table_new(g_str_hash, g_str_equal);
 
37
}
 
38
 
 
39
void test_stubs_finalize()
 
40
{
 
41
  g_hash_table_destroy(completions);
 
42
}
 
43
 
 
44
const gchar *editor_find_snippet(GeanyEditor *editor, const gchar *snippet_name)
 
45
{
 
46
  return (const gchar *)g_hash_table_lookup(completions, snippet_name);
 
47
}
 
48
 
 
49
 
 
50
/** Searches backward through @a size bytes looking for a '<'.
 
51
 * @param sel .
 
52
 * @param size .
 
53
 * @return pointer to '<' of the found opening tag within @a sel, or @c NULL if no opening tag was found.
 
54
 */
 
55
const gchar *utils_find_open_xml_tag_pos(const gchar sel[], gint size)
 
56
{
 
57
        /* stolen from anjuta and modified */
 
58
        const gchar *begin, *cur;
 
59
 
 
60
        if (G_UNLIKELY(size < 3))
 
61
        {       /* Smallest tag is "<p>" which is 3 characters */
 
62
                return NULL;
 
63
        }
 
64
        begin = &sel[0];
 
65
        cur = &sel[size - 1];
 
66
 
 
67
        /* Skip to the character before the closing brace */
 
68
        while (cur > begin)
 
69
        {
 
70
                if (*cur == '>')
 
71
                        break;
 
72
                --cur;
 
73
        }
 
74
        --cur;
 
75
        /* skip whitespace */
 
76
        while (cur > begin && isspace(*cur))
 
77
                cur--;
 
78
        if (*cur == '/')
 
79
                return NULL; /* we found a short tag which doesn't need to be closed */
 
80
        while (cur > begin)
 
81
        {
 
82
                if (*cur == '<')
 
83
                        break;
 
84
                /* exit immediately if such non-valid XML/HTML is detected, e.g. "<script>if a >" */
 
85
                else if (*cur == '>')
 
86
                        break;
 
87
                --cur;
 
88
        }
 
89
 
 
90
        /* if the found tag is an opening, not a closing tag or empty <> */
 
91
        if (*cur == '<' && *(cur + 1) != '/' && *(cur + 1) != '>')
 
92
                return cur;
 
93
 
 
94
        return NULL;
 
95
}
 
96
 
 
97
#endif