diff --git a/sourcing/view.py b/sourcing/view.py index 0828a31..3cd01d2 100644 --- a/sourcing/view.py +++ b/sourcing/view.py @@ -1,5 +1,5 @@ from flask import (Blueprint, render_template, request, redirect, flash, - url_for, abort, jsonify) + url_for, abort, jsonify, Response) from flask_login import (login_user, current_user, logout_user, login_required, LoginManager) from .forms import (LoginForm, SignupForm, AccountSettingsForm, @@ -18,6 +18,7 @@ import re login_manager = LoginManager() login_manager.login_view = '.login' re_paragraph = re.compile(r'(?:\r\n|\r|\n){2,}') +re_spanpointer = re.compile(r'([A-Za-z0-9]+),start=(\d+),length=(\d+)') bp = Blueprint('view', __name__) def init_app(app): @@ -55,7 +56,6 @@ def show_errors(f): @bp.route('/') def home(): - titles = XanaLink.get_all_titles() docs = Item.query.order_by(Item.created) return render_template('home.html', docs=docs) @@ -139,6 +139,12 @@ def view_edl(username, hashid): @bp.route('//') def view_item(username, hashid): + if ',' in hashid: + m = re_spanpointer.match(hashid) + hashid, start, length = m.group(1), int(m.group(2)), int(m.group(3)) + item = get_item(username, hashid) + return Response(item.text[start:length + start], mimetype='text/plain') + item = get_item(username, hashid) if item.type == 'xanadoc': return view_xanadoc(item)