File: tagscanner.cpp

package info (click to toggle)
nixnote2 2.0~beta11-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 9,448 kB
  • ctags: 7,058
  • sloc: cpp: 68,338; java: 1,096; sh: 834; makefile: 27
file content (78 lines) | stat: -rw-r--r-- 2,869 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*********************************************************************************
NixNote - An open-source client for the Evernote service.
Copyright (C) 2013 Randy Baumgarte

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
***********************************************************************************/

#include "tagscanner.h"
#include "global.h"

TagScannerRecord::TagScannerRecord(QObject *parent) {
    Q_UNUSED(parent);  // suppress unused
    this->startPosition = -1;
    this->endPosition = -1;
}



TagScanner::TagScanner(QObject *parent) :
    QObject(parent)
{
    content = "";
    recTable.clear();
}

void TagScanner::setData(QString data) {
    content = data;
    qint32 position = content.indexOf(QString("<"), Qt::CaseInsensitive);

    // Scan through & find all of the tags in a note
    while (position != -1) {
        TagScannerRecord newRec;

        newRec.startPosition = position;   // Position of the <
        newRec.endPosition = content.indexOf(QString(">"), position);   // Position of the next >
        qint32 space = content.indexOf(" ", position);  // If there is a space, then we remove any trailing values

        // Check for an invaild end position
        if (space > newRec.endPosition || space == -1)
            space = newRec.endPosition;

        // Get the tag's name
        QString tagName = content.mid(position+1, space-position-1);

        // Insert the tag qint32o the table along with its record position
        recTable.insert(tagName, newRec);

        // Start looking for the next tag
        position = content.indexOf(QString("<"),newRec.endPosition, Qt::CaseInsensitive);
    }
}

qint32 TagScanner::findAll(QList<TagScannerRecord> &recs, QString tagName) {
    recs.clear();
    qint32 position = content.indexOf(QString("<")+tagName, Qt::CaseInsensitive);

    while (position != -1) {
        TagScannerRecord newRec;
        newRec.startPosition = position;
        newRec.endPosition = content.indexOf(QString(">"), position);
        recs.append(newRec);
        position = content.indexOf(QString("<")+tagName, Qt::CaseInsensitive);
        QLOG_DEBUG() << "Found: " << content.mid(newRec.startPosition, newRec.endPosition);
    }
    return recs.size();
}