Tiện ích mở rộng:Loops
Trạng thái phát hành: ổn định |
|
|---|---|
| Triển khai | Hàm phân tích cú pháp |
| Mô tả | Cung cấp các hàm phân tích cú pháp dành cho việc thực hiện các vòng lặp |
| Tác giả | |
| Người bảo trì | MGChecker |
| Phiên bản mới nhất | 0.5.2 (2019-08-05) |
| MediaWiki | 1.34+ |
| PHP | 5.6+ |
| Database changes | Không |
|
|
| Licence | GNU General Public License 2.0 or later |
| Tải xuống | README RELEASE-NOTES |
| Ví dụ | sandbox.semantic-mediawiki.org |
| Translate the Loops extension if it is available at translatewiki.net | |
| Phản hồi | Open tasks · Báo cáo lỗi |
Tiện ích mở rộng Loops cung cấp Parser functions dành cho việc thực hiện các vòng lặp.
Hiện tại, tiện ích mở rộng này đang được bảo trì ở một cấp độ cơ bản bởi MGChecker.
Ứng dụng
#while
{{#while}} thực hiện một vòng lặp (tức là nó liên tục phân tích cú pháp một câu lệnh khối đánh dấu wiki nhất định) miễn là đánh dấu điều kiện không phải là khoảng trắng.
{{#while:
| <văn bản điều kiện>
| <câu lệnh khối>
}}
- Ví dụ
Đánh dấu wiki:
{{#vardefine: i | 0 }}{{#while:
| {{#ifexpr: {{#var: i }} < 5 | true }}
| <nowiki />
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}
sẽ cho ra như sau:
- 0
- 1
- 2
- 3
- 4
{{#while}} còn có thể được sử dụng trong một bản mẫu để mô phỏng một mảng được đánh số.
Nếu trang "Template:Loops Test" chứa
{{#vardefine: i | 0 }}{{#while:
| {{{arg{{#var: i }} |}}}
| <nowiki />
* {{{arg{{#var: i }} }}}{{#vardefine: i
| {{#expr: {{#var: i }} + 1 }}
}}
}}
thì đánh dấu wiki
{{Loops Test
|arg0=không
|arg1=một
|arg2=hai
|arg3=ba
|arg4=bốn
}}
sẽ cho ra:
- không
- một
- hai
- ba
- bốn
Điều quan trọng cần lưu ý là khoảng trắng, bao gồm dòng mới, tab và dấu cách, sẽ bị loại bỏ khỏi đầu và cuối tất cả các đối số của các hàm phân tích cú pháp này.
Nếu điều này không được mong muốn, việc thêm bất kỳ ký tự nào không phải khoảng trắng (bao gồm cả mã hóa HTML cho ký tự khoảng trắng  ) sẽ ngăn chặn việc loại bỏ thêm (do đó có câc thẻ <nowiki> trong các ví dụ trên).
#dowhile
{{#dowhile}} hoạt động chính xác như {{#while}}, ngoại trừ việc câu lệnh khối được đảm bảo sẽ được phân tích cú pháp và hiển thị (nếu nó cho kết quả là văn bản có thể hiển thị) ít nhất một lần.
Điều này được thực hiện trước khi văn bản điều kiện được ước lượng.
#loop
{{#loop: <variable name>
| <starting value>
| <number of loops to be performed>
| <wiki markup>
}}
{{#loop}} liên tục phân tích cú pháp và hiện thị {{#loop}} số lần bằng với giá trị tuyệt đối của <number of loops to be performed>.
<Starting value> được đặt trong một biến (có thể truy cập bằng hàm phân tích cú pháp {{#var:}} của tiện ích mở rộng Variables) bằng cách sử dụng tên <variable name>.
Sau mỗi vòng lặp, biến sẽ được tăng thêm một nếu <number of loops to be performed> là số dương, hoặc giảm đi một nếu <number of loops to be performed> là số âm.
#loop nên có hiệu suất tốt nhất vì không có điều kiện nào phải được mở rộng và xác nhận cho mỗi chu kỳ.- Ví dụ
Mã sau đây:
{{#loop: varname
| 4
| 4
| <nowiki />
* Đây là vòng {{#var: varname }} và ta còn {{#expr: 7 - {{#var: varname }} }} nữa
}}
sẽ cho ra:
- Đây là vòng 4 và ta còn 3 nữa
- Đây là vòng 5 và ta còn 2 nữa
- Đây là vòng 6 và ta còn 1 nữa
- Đây là vòng 7 và ta còn 0 nữa
#forargs (thử nghiệm)
{{#forargs}} sẽ được sử dụng trong các bản mẫu.
Nó lấy các đối số được cho vào bản mẫu và gán chúng vào các biến có thể được truy cập bằng hàm phân tích cú pháp {{#var:}} của tiện ích mở rộng Variables.
{{#forargs: <prefix>
| <key>
| <value>
| <block statement>
}}
Hàm này sẽ lặp qua từng đối số có tên bắt đầu bằng <prefix>.
Với mỗi lần lặp, nó sẽ gán tên đối số trừ đi <prefix> vào <key> như thể đang gọi {{#vardefine: <key> }}.
Sau đó nó lấy giá trị của đối số và gán nó vào <value> theo một phương pháp tương tự.
Sau đó câu lệnh khối được mở rộng.
Câu lệnh khối có thể chứa {{#var: <key> }} và {{#var: <value> }} để truy cập các đối số được lưu trữ.
- Ví dụ
Nếu trang "Template:Loops Test" chứa
{{#forargs: arg
| key
| value
| <nowiki />
* {{#var: key }} = {{#var: value }}
}}
thì đánh dấu wiki
{{Loops Test
| arg1=val1
| spam=spammity
| arg5=val5
| argument=value
}}
sẽ cho ra
- 1 = val1
- 5 = val5
- ument = value
#fornumargs (thử nghiệm)
{{#fornumargs: <key>
| <value>
| <block statement>
}}
{{#fornumargs}} hoạt động tương tự như {{#forargs}} với hai khác biệt chính: Nó không cần một đối số tiền tố, và nó chỉ hoạt động trên các đối số được đánh số dù chúng được đánh số rõ ràng,
{{Template
| 1=one
| 2=two
}}
hoặc được đánh số ngầm định.
{{Template
| one
| two
}}
Việc kết hợp các phương pháp này trong cùng một lời gọi bản mẫu có thể dẫn đến việc ghi đè các giá trị, vì vậy hãy cẩn thận.
- Ví dụ
Nếu "Template:Loops Test" được sửa đổi để chứa:
{{#fornumargs: number
| value
| <nowiki />
* {{#var: number }} = {{#var: value }}
}}
thì
{{Loops Test
| Apricot
| B = Bolognese
| Caramel slice
| 5 = Eclair
}}
sẽ cho kết quả là
- 1 = Apricot
- 2 = Caramel slice
- 5 = Eclair
Cách cài đặt
- Download and move the extracted
Loopsfolder to yourextensions/directory.
Developers and code contributors should install the extension from Git instead, using:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Loops
- Thêm mã sau vào dưới cùng tệp $LocalSettings của bạn:
wfLoadExtension( 'Loops' );
- Cấu hình theo ý muốn của bạn
Xong – Chuyển tới Special:Versiontrên wiki của bạn để xác nhận phần mở rộng được cài đặt thành công.
Cách cấu hình
Những biến cấu hình này cần được thiết lập trong tệp LocalSettings.php sau khi chèn tiện ích mở rộng này.
$wgLoopsCountLimit- Tham số này thiết lập số lượng vòng lặp tối đa mà một trang được cho phép thực hiện (mặc định là
100). Thiết lập nó thành-1sẽ cho các vòng lặp chạy trong phạm vi môi trường phps. Tham số này sẽ không ảnh hưởng đến cả hàm phân tích cú pháp{{#forargs:}}lẫn{{#fornumargs:}}.
$wgLoopsEnabledFunctions- Biến cấu hình (mảng) để xác định hàm Loops nên được kích hoạt. Mặc định là các hàm đã được kích hoạt nếu tiện ích mở rộng Variables cũng đã được cài đặt. Nếu tiện ích mở rộng Variables chưa được cài đặt,
#loop,#forargsvà#fornumargssẽ bị vô hiệu hóa vì chúng không không hoạt động mà không có nó được cài đặt. Để kích hoạt chỉ các hàm#fornumargsvà#forargs, có thể sử dụng:
$wgLoopsEnabledFunctions = array_diff(
$wgLoopsEnabledFunctions, [
'forargs', 'fornumargs'
]
);
Xem thêm
- Tiện ích mở rộng:LoopFunctions - Một tiện ích mở rộng khác cho các vòng lặp
- Module:Loops
| This extension is included in the following wiki farms/hosts and/or packages: |
- Stable extensions/vi
- Parser function extensions/vi
- ParserClearState extensions/vi
- ParserFirstCallInit extensions/vi
- ParserLimitReportPrepare extensions/vi
- GPL licensed extensions/vi
- Extensions in Wikimedia version control/vi
- All extensions/vi
- Extensions included in BlueSpice/vi
- Extensions included in Canasta/vi
- Extensions included in Fandom/vi
- Extensions included in Miraheze/vi
- Extensions included in MyWikis/vi
- Extensions included in ProWiki/vi
- Extensions included in semantic::core/vi
- Extensions included in Weird Gloop/vi
- Extensions included in wiki.gg/vi
